Quelle est la syntaxe SQL correcte pour insérer une valeur contenant une apostrophe?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Je continue à recevoir une erreur car je pense que l'apostrophe après le O est la balise de fin de la valeur.
sql
sql-update
sql-insert
leora
la source
la source
Réponses:
Échappez à l'apostrophe (c'est-à-dire doublez le caractère guillemet simple) dans votre SQL:
La même chose s'applique aux requêtes SELECT:
L'apostrophe, ou guillemet simple, est un caractère spécial en SQL qui spécifie le début et la fin des données de chaîne. Cela signifie que pour l'utiliser dans le cadre de vos données de chaîne littérale, vous devez utiliser
escape
le caractère spécial. Avec un seul devis, cela se fait généralement en doublant votre devis. (Deux guillemets simples, pas des guillemets doubles au lieu d'un guillemet simple.)Remarque : vous ne devez vous soucier de ce problème que lorsque vous modifiez manuellement des données via une interface SQL brute, car l'écriture de requêtes en dehors du développement et des tests devrait être une occurrence rare. Dans le code, il existe des techniques et des cadres (selon votre pile) qui prennent en charge les caractères spéciaux d'échappement, l' injection SQL , etc.
la source
Il suffit de doubler les guillemets simples ...
la source
Vous devez échapper à l'apostrophe. Dans T-SQL, c'est avec une double apostrophe, donc votre
insert
déclaration devient:la source
Values
doit être placé entre accolades (ce qui en fait alors la même réponse que celle de @JustinNiessner)Parce qu'un guillemet simple est utilisé pour indiquer le début et la fin d'une chaîne; vous devez y échapper.
La réponse courte est d'utiliser deux guillemets simples -
''
- pour qu'une base de données SQL stocke la valeur sous'
.Regardez à l'aide de REMPLACER pour nettoyer les valeurs entrantes:
Vous voulez vérifier
''''
et les remplacer s'ils existent dans la chaîne''''''
afin d'échapper au guillemet simple.la source
eduffy a eu une bonne idée . Il vient de le récupérer dans son exemple de code. En JavaScript ou en SQLite, vous pouvez remplacer l'apostrophe par le symbole d'accent.
Il (accidentellement je suis sûr) a placé le symbole d'accent comme délimiteur pour la chaîne au lieu de remplacer l'apostrophe dans O'Brian. C'est en fait une solution terriblement simple pour la plupart des cas.
la source
Le caractère d'apostrophe peut être inséré en appelant la fonction CHAR avec la valeur de recherche de table ASCII de l'apostrophe , 39. Les valeurs de chaîne peuvent ensuite être concaténées avec un opérateur de concaténation .
la source
Le SQL suivant illustre cette fonctionnalité.
Résultats
la source
utilisez des guillemets doubles autour des valeurs.
la source
He said, "Don't!"
utilisant des guillemets simples et / ou des guillemets doubles - ce qui peut être fait:'He said, "Don''t!"'
ou"He said, ""Don't!"""
. Lorsque vous ajoutez une nouvelle réponse à une question établie de longue date avec des réponses acceptées, vous devez fournir de nouvelles informations complètes. L'utilisation de guillemets doubles est nouvelle - mais limitée à quelques SGBD; vous devriez vous efforcer d'identifier au moins un de ceux qui les acceptent.Utilisez plutôt un backtick (sur la touche ~);
la source