Как вставить значение, содержащее апостроф (одинарная кавычка)?

Каков правильный синтаксис SQL, чтобы вставить в него значение с апострофом?

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

Я продолжаю получать ошибку, так как я думаю, что апостроф после O является конечным тегом для значения.

Ответ 1

Побег апострофа (т.е. двойного символа одиночной кавычки) в вашем 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 и т.д.

Ответ 2

Вам просто нужно удвоить одиночные кавычки...

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

Ответ 3

Вам нужно избежать апострофа. В T-SQL это с двойным апострофом, поэтому ваш оператор insert будет выглядеть следующим образом:

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

Ответ 4

Поскольку для указания начала и конца строки используется одинарная кавычка; вам нужно избежать этого.

Короткий ответ заключается в использовании двух одинарных кавычек - '' - для того, чтобы база данных SQL сохраняла значение как '.

Посмотрите на использование REPLACE для дезинфекции входящих значений:

Вы хотите проверить '''' и заменить их, если они существуют в строке с '''''', чтобы избежать одиночной одинарной кавычки.

Ответ 5

У эдиффа была хорошая идея. Он просто получил его обратно в своем примере с кодом. Либо в JavaScript, либо в SQLite вы можете заменить апостроф символом акцента.

Он (случайно я уверен) поместил символ акцента в качестве разделителя для строки вместо замены апострофа в O'Brian. В большинстве случаев это очень простое решение.

Ответ 6

Апострофный символ можно вставить, вызвав функцию CHAR с апострофом ASCII table, 39. Затем строковые значения можно объединить вместе с оператором .

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

Ответ 7

используйте двойные кавычки вокруг значений.

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

Ответ 8

Вместо этого используйте обратную линию (на кнопке ~);

`O'Brien`