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