Как вставить значение, содержащее Апостроф (одинарную кавычку)?
каков правильный синтаксис SQL для вставки значения с апострофом в нем?
Insert into Person
(First, Last)
Values
'Joe',
'O'Brien'
Я продолжаю получать сообщение об ошибке, поскольку я думаю, что Апостроф после O является конечным тегом для значения.
9 ответов:
Escape Апостроф (т. е. удвоить символ одинарной кавычки) в вашем 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 injection и т. д.
вам просто нужно удвоить одинарные кавычки...
insert into Person (First, Last) values ('Joe', 'O''Brien')
вам нужно избежать Апострофа. В -ЭТО это с двойным Апострофом, так что ваш
insertзаявление выглядит так:Insert into Person (First, Last) Values 'Joe', 'O''Brien'
потому что одинарная кавычка используется для указания начала и конца строки; вам нужно ее экранировать.
короткий ответ заключается в использовании двух одинарных кавычек -
''- для того, чтобы база данных SQL хранила значение как'.посмотрите на использование замены для очистки входящих значений:
вы хотите проверить для
'''', и заменить их, если они существуют в строке с''''''чтобы избежать одинокой одинарной кавычки.
у эдуффи была хорошая идея. Он просто получил его обратно в своем примере кода. Либо в JavaScript, либо в SQLite вы можете заменить Апостроф символом акцента.
Он (случайно я уверен) поместил символ акцента в качестве разделителя для строки вместо замены Апострофа в O'Brian. Это на самом деле ужасно простое решение для большинства случаев.
символ Апострофа можно вставить, вызвав CHAR функция с апострофом ASCII таблица поиска значением, 39. Затем строковые значения могут быть объединены вместе с конкатенации оператор.
Insert into Person (First, Last) Values 'Joe', concat('O',char(39),'Brien')
использовать двойные кавычки вокруг значений.
insert into Person (First, Last) Values("Joe","O'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
Comments