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

21
demandé sur Vishal Suthar 2011-07-20 19:12:33

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.

48
répondu Alex K. 2017-02-16 16:23:42

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";
2
répondu HansUp 2011-07-20 15:37:23

Échapper à l'apostrophe dans O'Neal en écrivant O''Neal (deux apostrophes).

1
répondu murgatroid99 2011-07-20 15:15:18

...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
0
répondu Ralf 2015-01-18 19:55:18

Comment au sujet de plus simple: Sélectionnez * à partir de tblStudents où [nom] = replace(Votrenom,"'",""")

0
répondu user9198383 2018-01-10 12:15:03