Rechercher les valeurs de type alphabétique

Bonjour,

j’ai fait une query sur une table qui comporte toutes les entités physiques ou légales: clients, employées, entreprise. 30 000 résultats.
Mais je ne voudrai extraire que la quinzaine d’utilisateurs qui ont accès au système.
J’ai remarqué que ces utilisateurs ont une valeur alphabétique dans une colonne ‘Custom_userID’, > 5caractères alors que les autres ont une valeur alphanumérique <6 caractères.

Comment trier et obtenir la liste de ma quinzaine d’utilisateurs?

Merci d’avance

Sebastien

est ce qu’un enrichissement de la requête avec la fonction LENGTH(…) peut fonctionner ?
publib.boulder.ibm.com… (google + “sql length”)

select Custom_userID From matable where LENGTH(Custom_userID) > 5

quelque chose du genre.

Ou faire le tri après la requête ??
Edité le 30/08/2010 à 13:12

select Custom_userID from matable
where LENGTH (Custom_userID) > 5
and Custom_UserID is not NULL
and nationalityID = ‘10’

–>
Msg 195, Level 15, State 10, Line 2
‘LENGTH’ is not a recognized built-in function name.


J’ai fait un order by:
select Custom_SearchName, Custom_RelationID, * from matable
where Custom_UserID is not NULL
and nationalityID = ‘10’
order by p.Custom_RelationID desc

j’obtiens les résultats que je veux mais cela inclut toujours les 23936 résultats non souhaités, ainsi qu’une centaine d’utilisateurs qui sont mes collègues.

Je vais faire un top 35, car je veux garder les 35 premiers résultats de cette requête:
select Custom_SearchName, Custom_RelationID, * from matable
where Custom_UserID is not NULL
and nationalityID = ‘10’
order by p.Custom_RelationID desc

Mais j’aurai quand-même voulu connaître le moyen de trier les 35 résultats sur le fait qu’ils ne sont pas alphanumérique (ex:
‘7WAEH’
‘7WAEF’
‘7WADY’)
mais de type alphabetique, genre ‘dupont’, ‘dupond’.
Edité le 30/08/2010 à 13:48

Salut,
les regex sont là pour ça, de même que limit().

SELECT Custom_userID from matable where Custom_userID NOT regexp("[^a-zA-Z\ ]") and Custom_userID is not null and nationalityID ='10';

NB : j’y suis allé à taton étant donné que je suis une biroute relative en regex :smiley:

pour chopper les chaines de 6+ caractères :

SELECT champs from ma_table where champs regexp("......")

le plus simple reste length(champs) >= 6 …

edit: syntaxe de limit :

LIMIT debut longueur

genre de 10 à 25 : on commence à dix, la longueur est de 25-10 = 15

select * from matable limit 10,15
Edité le 06/09/2010 à 06:14

J’ai essayé, mais il ne reconnait pas:

SELECT Custom_userID from matable
where Custom_userID NOT regexp("[^a-z;A-Z\ ]")
and Custom_userID is not null
and nationalityID =‘10’

–>
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ‘regexp’.

C’est quel SGBD ? MySQL, SQL Server, Oracle, … ?

j’aurais effectivement du poser la question d’abord … Voyant qu’il ne reconnait déjà pas “LENGTH()” … (faudrait tester avec LEN() )