2009-12-13 6 views
0

Je cherche un moyen de rechercher une colonne de type chaîne de caractères qui contient un * - le problème est que l'étoile ou l'astérisque est un symbole réservé. La requête suivante ne fonctionne pas correctement:MS Access: recherche d'une étoile dans une colonne/astérisque

select * from users where instr(pattern,"*") 

Comment pouvez-vous écrire une requête d'accès à la recherche d'une colonne pour un astérisque?

Répondre

2

yay, trouvé par moi-même:

select * from users where instr(pattern,chr(42)) 
+0

Dans quelle version l'accès af avez-vous tester cela? Ne fonctionne pas en 2007 –

+0

Devrait-il avoir une condition booléenne - quelque chose comme 'where instr (pattern, chr (42))> 0'? –

+0

Oui, ça devrait. –

2

Il suffit d'utiliser

select * from users where instr(pattern,"*") > 0 

De Access: Instr Function

Dans Access, la fonction instr retourne la position de la première occurrence d'une chaîne dans une autre chaîne.

4

Vous pouvez rechercher charaters de dans Access en réservés A l'aide de crochets:

select * from users where pattern like "*[*]*" 
1

Utilisez la fonction ALIKE parce que ses caractères génériques ne comprennent pas * par exemple

SELECT * FROM Users WHERE pattern ALIKE '%*%'; 

(Modifier par DWF: voir @ onedayone de useful explanation of ALIKE)

+0

Attention à faire la différence entre les opérateurs LIKE et ALIKE? Je suis incapable avec une recherche rapide dans Access aider à trouver la distinction.Autant que je sache, ALIKE permet d'utiliser des jokers compatibles SQL Server sans avoir besoin de configurer votre base de données pour utiliser le mode SQL 92. –

+0

Je le fais habituellement mais les différences ne sont pas pertinentes ici: tout ce que vous devez savoir est que ALIKE traite le caractère * comme un littéral. Pour plus de détails, voyez-moi d'autres réponses, par ex. http://stackoverflow.com/questions/719115/microsoft-jet-wildcards-asterisk-or-percentage-sign/720896#720896 – onedaywhen

+0

J'ai édité dans votre réponse la référence à votre autre réponse (que j'avais déjà vue plus tôt) . Vous voyez, je vais * éditer quand je pense que c'est approprié. –