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

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

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

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

293
задан Peter Mortensen 25 January 2016 в 06:29
поделиться

5 ответов

Избегайте апострофа (т.е. удваивайте символ одинарной кавычки) в вашем SQL:

INSERT INTO Person
    (First, Last)
VALUES
    ('Joe', 'O''Brien')
              /\
          right here  

То же самое применимо к запросам SELECT:

SELECT First, Last FROM Person WHERE Last = 'O''Brien'

Апостроф или одинарная кавычка, - это специальный символ в SQL, который определяет начало и конец строковых данных. Это означает, что для использования его как части ваших строковых буквальных данных вам необходимо экранировать специальный символ. При использовании одинарной цитаты это обычно достигается путем удвоения вашей цитаты. (Два символа одинарной кавычки, а не двойные кавычки вместо одиночной кавычки.)

Примечание : вам следует беспокоиться об этой проблеме только при ручном редактировании данных через необработанный интерфейс SQL, так как запросы пишутся вне пределов разработки и тестирование должно быть редким явлением. В коде есть методы и структуры (в зависимости от вашего стека), которые заботятся об экранировании специальных символов, SQL-инъекции и т. Д.

447
ответ дан 23 November 2019 в 01:38
поделиться

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

Insert into Person
(First, Last)
Values
'Joe', 'O''Brien'
20
ответ дан 23 November 2019 в 01:38
поделиться

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

insert into Person (First, Last)
values ('Joe', 'O''Brien')
34
ответ дан 23 November 2019 в 01:38
поделиться

Используйте обратную кавычку (на клавише ~ ) вместо;

`O'Brien`
-2
ответ дан 23 November 2019 в 01:38
поделиться

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

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

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

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

14
ответ дан 23 November 2019 в 01:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: