Я пытаюсь insert
некоторые текстовые данные в таблицу в SQL Server
9.
Текст включает в себя одну цитату (').
Как мне избежать этого?
Я попытался использовать две одинарные кавычки, но это привело меня к ошибкам.
например. insert into my_table values('hi, my name''s tim.');
sql
sql-server
tsql
delimiter
single-quotes
tim_wonil
источник
источник
Ответы:
Одиночные кавычки можно избежать, удвоив их , как вы показали нам в своем примере. Следующий SQL иллюстрирует эту функциональность. Я проверил это на SQL Server 2008:
Результаты
источник
Если экранирование одной цитаты с другой одинарной кавычкой не работает для вас (как это было для одного из моих недавних
REPLACE()
запросов), вы можете использовать егоSET QUOTED_IDENTIFIER OFF
до запроса, а затемSET QUOTED_IDENTIFIER ON
после запроса.Например
источник
Как насчет:
источник
Удвоение цитаты должно было сработать, поэтому странно, что оно не сработало для вас; однако альтернативой является использование двойных кавычек вместо одинарных символов в строке. То есть,
insert into my_table values("hi, my name's tim."
);источник
2 способа обойти это:
потому что
'
вы можете просто удвоить его в строке, напримерselect 'I''m happpy'
- получите:I'm happy
Для любого персонажа, в котором вы не уверены: на сервере sql вы можете получить юникод любого символа по
select unicode(':')
(вы сохраняете номер)Так что в этом случае вы также можете
select 'I'+nchar(39)+'m happpy'
источник
Также следует обратить внимание на то, действительно ли он хранится как классический ASCII '(ASCII 27) или Unicode 2019 (который выглядит аналогично, но не одинаково).
Это не имеет большого значения для вставок, но это может означать мир выбора и обновления.
Если это значение в юникоде, то экранирование 'в предложении WHERE (например, где blah =' Workers''s Comp ') вернет, что искомого значения нет, если' в "Worker's Comp" на самом деле значение Юникода.
Если ваше клиентское приложение поддерживает ввод с произвольным ключом, а также ввод на основе копирования и вставки, это может быть Unicode в одних строках и ASCII в других!
Простой способ подтвердить это - выполнить какой-то открытый запрос, который вернет искомое значение, а затем скопировать и вставить его в notepad ++ или другой редактор, поддерживающий юникод.
Различный вид между значением ascii и значением unicode должен быть очевиден для глаз, но если вы склонитесь к анальному, он будет отображаться как 27 (ascii) или 92 (unicode) в шестнадцатеричном редакторе.
источник
Многие из нас знают, что популярный метод избежания одиночных кавычек заключается в их удвоении, как показано ниже.
мы рассмотрим некоторые другие альтернативные способы избежать одиночных кавычек.
1.Юникод
39 - UNICODE-символ одинарной кавычки. Таким образом, мы можем использовать его, как показано ниже.
2.QUOTED_IDENTIFIER
Другое простое и лучшее альтернативное решение - использовать QUOTED_IDENTIFIER. Когда QUOTED_IDENTIFIER установлен на OFF, строки могут быть заключены в двойные кавычки. В этом сценарии нам не нужно избегать одинарных кавычек. Таким образом, этот способ был бы очень полезен при использовании большого количества строковых значений в одинарных кавычках. Это будет очень полезно при использовании такого количества строк сценариев INSERT / UPDATE, где значения столбцов имеют одинарные кавычки.
ВЫВОД
Вышеупомянутые методы применимы как к AZURE, так и к помещениям.
источник
Следующий синтаксис избавит вас от ТОЛЬКО ОДНОЙ кавычки:
Результатом будет одинарная кавычка. Может быть очень полезно для создания динамического SQL :).
источник
Это должно работать
источник
Просто вставьте ', прежде чем что-либо вставлять. Это будет как escape-символ в sqlServer
Пример: когда у вас есть поле как, я в порядке . Вы можете сделать: ОБНОВИТЬ my_table SET row = 'Я в порядке.';
источник
Это должно работать: использовать обратную косую черту и поставить двойную кавычку
источник
PRINT \"hi, my name's tim.\";
собираетесь работать в SSMS? Это не работает вообще, и никто никогда не говорил, что это работает.