Comment insérer une valeur qui contient une apostrophe (guillemet simple)?

Quelle est la syntaxe SQL correcte pour insérer une valeur avec une apostrophe?

Insert into Person (First, Last) Values 'Joe', 'O'Brien' 

Je continue à avoir une erreur car je pense que l’apostrophe après le O est la balise de fin pour la valeur.

Échappez à l’apostrophe (c’est-à-dire doublez le caractère guillemet simple) dans votre SQL:

 INSERT INTO Person (First, Last) VALUES ('Joe', 'O''Brien') /\ right here 

La même chose s’applique aux requêtes SELECT:

 SELECT First, Last FROM Person WHERE Last = 'O''Brien' 

L’apostrophe, ou guillemet simple, est un caractère spécial dans 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érales, vous devez escape au caractère spécial. En un seul devis, cela se fait généralement en doublant votre devis. (Deux guillemets simples, pas de guillemet double au lieu d’une seule citation.)

Remarque : Vous ne devriez vous préoccuper 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 du test devrait être rare. Dans le code, il existe des techniques et des frameworks (en fonction de votre stack) qui prennent en charge les caractères spéciaux, l’ injection SQL , etc.

Il suffit de doubler les guillemets simples …

 insert into Person (First, Last) values ('Joe', 'O''Brien') 

Vous devez échapper à l’apostrophe. Dans T-SQL, il s’agit d’une double apostrophe, donc votre instruction d’ insert devient:

 Insert into Person (First, Last) Values 'Joe', 'O''Brien' 

Parce qu’un seul devis 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 firebase database SQL stocke la valeur sous la forme ' .

Utilisez REPLACE pour assainir les valeurs entrantes:

  • Oracle REMPLACER
  • SQL Server REPLACE
  • MySQL REPLACE
  • PostgreSQL REPLACE

Vous voulez vérifier '''' et les remplacer s’ils existent dans la chaîne avec '''''' afin d’échapper à la seule citation unique.

Eduffy a eu une bonne idée . Il vient de le récupérer dans son exemple de code. Que ce soit en JavaScript ou en SQLite, vous pouvez remplacer l’apostrophe par le symbole accent.

Il (accidentellement j’en suis sûr) a placé le symbole d’accent comme le délimiteur de la chaîne au lieu de remplacer l’apostrophe dans O’Brian. C’est en fait une solution extrêmement simple pour la plupart des cas.

Le caractère 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 .

 Insert into Person (First, Last) Values 'Joe', concat('O',char(39),'Brien') 

Utilisez des guillemets doubles autour des valeurs.

 insert into Person (First, Last) Values("Joe","O'Brien") 

Les guillemets simples sont échappés en les doublant ,

Le code SQL suivant illustre cette fonctionnalité.

 declare @person TABLE ( [First] nvarchar(200), [Last] nvarchar(200) ) insert into @person (First, Last) values ('Joe', 'O''Brien') select * from @person 

Résultats

 First | Last =================== Joe | O'Brien 

Utilisez plutôt un backtick (sur la touche ~);

 `O'Brien`