SQL pour interroger du texte dans access avec une apostrophe
S'il vous plait aidez-moi avec ceci parce que je n'arrive pas à le faire correctement
J'essaie d'interroger un nom(Daniel O'Neal) dans les noms de colonnes tblStudents dans une base de données access, mais access signale une erreur de syntaxe avec l'instruction:
Select * from tblStudents where name like 'Daniel O'Neal'
À Cause de l'apostrophe dans le nom.
Comment puis-je surmonter cela.
Merci d'avance
5 réponses
Vous échapper '
en le doublant, donc:
Select * from tblStudents where name like 'Daniel O''Neal'
Notez que si vous acceptez "Daniel O'Neal" de l'entrée de l'utilisateur, la citation cassée est un problème de sécurité sérieux. Vous devez toujours désinfecter la chaîne ou utiliser des requêtes paramétrées.
Lorsque vous incluez un littéral de chaîne dans une requête, vous pouvez placer la chaîne entre guillemets simples ou doubles; Access ' database engine acceptera l'un ou l'autre. Ainsi, les guillemets doubles éviteront le problème avec une chaîne qui contient un seul guillemet.
SELECT * FROM tblStudents WHERE [name] Like "Daniel O'Neal";
Si vous voulez garder les guillemets simples autour de votre chaîne, vous pouvez doubler le guillemet simple à l'intérieur, comme mentionné dans d'autres réponses.
SELECT * FROM tblStudents WHERE [name] Like 'Daniel O''Neal';
Notez les crochets entourant nom. J'ai utilisé les parenthèses pour réduire le risque de confusion du moteur de base de données parce que name est un mot réservé .
Il n'est pas clair pourquoi vous utilisez la comparaison comme dans votre requête. Basé sur ce que vous avez montré, cela devrait fonctionner à la place.
SELECT * FROM tblStudents WHERE [name] = "Daniel O'Neal";
Échapper à l'apostrophe dans O'Neal
en écrivant O''Neal
(deux apostrophes).
...mieux vaut déclarer le nom comme varible, et demander avant s'il y a une apostrophe dans la chaîne:
Par exemple:
DIM Yourname chaîne
Votrenom = "Daniel O'Neal"
If InStr(YourName, "'") Then
SELECT * FROM tblStudents WHERE [name] Like """ Your Name """ ;
else
SELECT * FROM tblStudents WHERE [name] Like '" Your Name "' ;
endif
Comment au sujet de plus simple: Sélectionnez * à partir de tblStudents où [nom] = replace(Votrenom,"'",""")