Comment insérer une valeur qui contient une apostrophe (simple citation)?
Quelle est la syntaxe SQL correcte pour y insérer une valeur avec 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 pour la valeur.
9 réponses
Échapper l'apostrophe (soit le double de l'apostrophe) dans votre SQL:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
la même chose s'applique à la sélection des requêtes:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
l'apostrophe, ou simple citation, 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 comme partie de vos données de chaîne littérale vous avez besoin de escape
le caractère spécial. Avec une seule citation c'est typiquement accompli en doublant votre soumission. (Deux guillemets simples, pas deux guillemets au lieu d'un seul.)
Note : vous ne devriez jamais vous soucier de ce problème lorsque vous éditez manuellement des données via une interface SQL brute, car écrire des requêtes en dehors du développement et des tests devrait être un événement rare. Dans le code il y a des techniques et des cadres (selon votre pile) qui prennent soin d'échapper aux caractères spéciaux, 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 c'est avec une double apostrophe, donc votre insert
déclaration devient:
Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
parce qu'une seule citation est utilisée pour indiquer le début et la fin d'une chaîne; vous devez l'échapper.
La réponse courte est d'utiliser deux apostrophes ''
- pour une base de données SQL pour stocker la valeur '
.
examiner L'utilisation de REPLACE to sanitize incoming values:
vous voulez vérifier pour ''''
, et les remplacer s'ils existent dans la chaîne de caractères avec ''''''
afin d'échapper à la citation unique.
eduffy a eu une bonne idée . Il l'a fait à l'envers dans son exemple de code. Que ce soit 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 le délimiteur de 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.
le caractère apostrophe peut être inséré en appelant la fonction CHAR avec la valeur ASCII table lookup , 39. Les valeurs de la chaîne peuvent alors être concaténées avec un opérateur de concaténation .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
utiliser des guillemets autour des valeurs.
insert into Person (First, Last) Values("Joe","O'Brien")
les citations simples sont échappées en les doublant ,
le 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