Какой правильный синтаксис SQL для вставки значения с апострофом в нем?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Я продолжаю получать сообщение об ошибке, так как считаю апостроф после O конечным тегом для значения.
Какой правильный синтаксис SQL для вставки значения с апострофом в нем?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Я продолжаю получать сообщение об ошибке, так как считаю апостроф после O конечным тегом для значения.
Ответы:
Избегайте апострофа (т.е. удваивайте символ одинарной кавычки) в вашем SQL:
INSERT INTO Person
(First, Last)
VALUES
('Joe', 'O''Brien')
/\
right here
То же самое относится к запросам SELECT:
SELECT First, Last FROM Person WHERE Last = 'O''Brien'
Апостроф или одинарная кавычка - это специальный символ в SQL, который указывает начало и конец строковых данных. Это означает, что для использования его как части ваших строковых данных вам необходим escape
специальный символ. С помощью одной цитаты это обычно достигается путем удвоения вашей цитаты. (Два символа одинарных кавычек, а не двойные кавычки вместо одинарных.)
Примечание . Об этой проблеме следует беспокоиться только в том случае, если вы вручную редактируете данные через необработанный интерфейс SQL, поскольку написание запросов вне разработки и тестирования должно быть редким явлением. В коде есть методы и структуры (в зависимости от вашего стека), которые заботятся о экранировании специальных символов, внедрении SQL и т. Д.
Вам просто нужно удвоить одинарные кавычки ...
insert into Person (First, Last)
values ('Joe', 'O''Brien')
Потому что для указания начала и конца строки используется одинарная кавычка; Вы должны избежать этого.
Короткий ответ - использовать две одинарные кавычки - ''
для того, чтобы база данных SQL сохраняла значение как '
.
Посмотрите, как использовать REPLACE для очистки входящих значений:
Вы хотите проверить ''''
и заменить их, если они существуют в строке ''''''
, чтобы избежать одиночной одиночной кавычки.
У Эдуффи была хорошая идея . Он просто получил это назад в своем примере кода. В JavaScript или в SQLite апостроф можно заменить символом акцента.
Он (случайно я уверен) поместил символ акцента в качестве разделителя для строки вместо того, чтобы заменить апостроф в О'Брайане. На самом деле это чрезвычайно простое решение для большинства случаев.
Символ апострофа можно вставить, вызвав функцию CHAR со значением поиска в таблице ASCII апострофа , 39. Затем строковые значения можно объединить вместе с оператором сцепления .
Insert into Person
(First, Last)
Values
'Joe',
concat('O',char(39),'Brien')
Одиночные кавычки избегают, удваивая их ,
Следующий SQL иллюстрирует эту функциональность.
declare @person TABLE (
[First] nvarchar(200),
[Last] nvarchar(200)
)
insert into @person
(First, Last)
values
('Joe', 'O''Brien')
select * from @person
First | Last
===================
Joe | O'Brien
используйте двойные кавычки вокруг значений.
insert into Person (First, Last) Values("Joe","O'Brien")
He said, "Don't!"
использовать одинарные и / или двойные кавычки - что можно сделать: 'He said, "Don''t!"'
или "He said, ""Don't!"""
. При добавлении нового ответа на давно установленный вопрос с принятыми ответами вы должны предоставить новую полную информацию. Использование двойных кавычек является новым, но ограничено несколькими СУБД; Вы должны приложить усилия, чтобы определить хотя бы одного из тех, кто их принимает.
Вместо этого используйте обратную черту (на клавише ~);
`O'Brien`