S'il vous plaît, aidez-moi car je n'arrive pas à faire les choses correctement
J'essaie d'interroger un nom (Daniel O'Neal) dans les noms de colonne tblStudents dans une base de données d'accès, 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
Vous vous échappez '
en le doublant, donc:
Select * from tblStudents where name like 'Daniel O''Neal'
Notez que si vous acceptez "Daniel O'Neal" de la part de l'utilisateur, la citation brisée est un grave problème de sécurité. Vous devez toujours nettoyer 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; Le moteur de base de données d'Access acceptera l'un ou l'autre. Ainsi, les guillemets doubles éviteront le problème avec une chaîne qui contient un guillemet simple.
SELECT * FROM tblStudents WHERE [name] Like "Daniel O'Neal";
Si vous souhaitez conserver les guillemets simples autour de votre chaîne, vous pouvez doubler la 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 le nom . J'ai utilisé les crochets pour réduire les risques de confusion dans le moteur de base de données car le nom est un mot réservé .
La raison pour laquelle vous utilisez la comparaison Like dans votre requête n'est pas claire. D'après ce que vous avez montré, cela devrait plutôt fonctionner.
SELECT * FROM tblStudents WHERE [name] = "Daniel O'Neal";
Échappez à l'apostrophe dans O'Neal
en écrivant O''Neal
(deux apostrophes).
Que diriez-vous plus simplement: Sélectionnez * dans tblStudents où [nom] = remplacer (YourName, "'", "' '")
... mieux vaut déclarer le nom comme variable, et demander avant s'il y a une apostrophe dans la chaîne:
par exemple.:
DIM YourName string
YourName = "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