Requête sql particulière

guadoc Messages postés 89 Statut Membre -  
Reivax962 Messages postés 3742 Statut Membre -
Bonjour,

Je possède une table "personne" avec les champs suivants:Nom ,Matricule
J'aimerais faire une sélection SQl sur cette table avec le critères suivants: je ne sélectionne que les noms dont le matricule commence par 'N' et est suivis que des chiffres.
Si quelqu'un a une idée du code de la requête SQL?
Je ne sais pas si cela est possible en SQL. Ma base est sous access alors s'il existe une autre solution sous access pour faire cette sélection je suis preneur.
Merci d'avance pour vos contributions.



3 réponses

swoog42 Messages postés 1178 Statut Membre 244
 
regarde du coté de la fonction like
Ta requète serait un truc dans le genre :
select * from personne Matricule like ' [Nn][0-9%]'
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Le % à l'intérieur des crochets ne représente que le caractère %... du moins sous SQL Server.

Xavier
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Le % à l'intérieur des crochets ne représente que le caractère %... du moins sous SQL Server.

Xavier
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Le % à l'intérieur des crochets ne représente que le caractère %... du moins sous SQL Server.

Xavier
0
swoog42 Messages postés 1178 Statut Membre 244
 
j'avais un doute, maintenant, je sais... 3 fois mieux
MDR !
Je ne sais pas comment se représente un suit de caractères numériques...


Après recherche, j'ai trouvé ca :
select * from personne Matricule like ' [Nn][0-9]+'
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Pourtant je n'ai cliqué qu'une fois ^^'
Mais il est vrai que ça a ramé, pour me dire au final que ça avait échoué :p
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Honnêtement, je n'ai pas trouvé de façon de dire "qui ne contient que des chiffres après une lettre". Sauf si tu sais par avance combien de chiffre il y a.
Par exemple, s'il y a forcément 8 chiffres, tu peux écrire :
select * from personne where matricule like 'N[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' ;

Par contre, on peut facilement dire "qui contient N puis de contient aucune lettre" :
select * from personne where matricule like 'N[0-9]%' AND NOT LIKE 'N%[a-zA-Z]%'

Si il y a des accents ou des caractères spéciaux, il faut les rajouter entre les crochets.
Le [0-9] dans la première clause avant le AND permet de filtrer plus de lignes pour accélérer la requête sur la ligne suivante, qui peut être longue...

Xavier
0
Sir Hicham
 
bonjour,
pour ton problème tu peux utiliser la requête suivante :

------> select * from personne where matricule like 'N%' ;
-2