2011-07-18 1 views
1

Quelle est la meilleure façon de séparer les données par ordre alphabétique en utilisant SQL?Quelle est la meilleure façon de séparer les données par ordre alphabétique en utilisant SQL?

Je voudrais diviser les données en 3 parties en fonction du caractère de départ des données dans certaines colonnes ??

+1

Sonorités extrêmement simple. Où avez-vous eu des problèmes? –

+0

Connaissez-vous les limites pour les 3 parties à l'avance? Par exemple. (A ~ G, H ~ O, P ~ Z) – Thilo

+0

Que dois-je utiliser? Comme déclaration ?? – SouravM

Répondre

1

vous pouvez également utiliser ceci:

select * 
from your_table 
where your_column between 'A' and 'G'; 
+0

Note:' 'George '>' G'' =>' «George» n'est pas entre «A» et «G». Donc, cela n'inclura pas les lignes avec '' George'' ou '' Graham'' ou tout autre mot commençant par 'G' (sauf ** et seulement **' 'G''). –

2

Vous pouvez utiliser l'instruction REGEX_LIKE pour obtenir le résultat.

Exemple:

-- For Range [A--G] 
SELECT target_col 
FROM target_table 
WHERE REGEXP_LIKE(target_col, '^[A-G].$') ; 

-- For Range [H--O] 
SELECT target_col 
FROM target_table 
WHERE REGEXP_LIKE(target_col, '^[H-O].$') ; 

-- For Range [P--Z] 
SELECT target_col 
FROM target_table 
WHERE REGEXP_LIKE(target_col, '^[P-Z].$') ; 
+0

pouvez-vous s'il vous plaît m'aider à comprendre comment cette requête traiterait dans Oracle ?? – SouravM

+0

Je suis désolé Sourav, Mais c'est une déclaration Oracle. Vous pouvez obtenir plus d'aide de 'REGEXP_LIKE' sur http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/conditions007.htm –

2
-- For Range [A--G] 

SELECT target_col 
FROM target_table 
WHERE target_col >= 'A' 
    AND target_col < 'H' 

Si un index simple sur target_col, la requête utilisera probablement.

+0

Quel est le meilleur des trois solutions? – SouravM

+0

Je me suis rendu compte que la sous-chaîne n'est pas nécessaire pour faire le filtre, donc la solution et la mienne sont les mêmes. – Aitor

+0

@SouravM: Pourquoi ne pas essayer les solutions que vous avez (et les chronométrer)? –

Questions connexes