У вас уже есть предложения в комментариях. Просто некоторое объяснение:
Двойные кавычки на самом деле не являются частью строки
DECLARE @SomeString VARCHAR(100) = 'With one quote''!';
Строка, которую вы найдете в своей переменной, будет With one quote'!
. Двойные кавычки — это просто специальность синтаксиса, позволяющая синтаксическому анализатору операторов видеть, завершает ли кавычка строку или нет. Что-то вроде
DECLARE @SomeString VARCHAR(100) = 'With one quote'!'; --wrong!
...неверно, потому что строка заканчивается после quote
, а !'
внезапно является синтаксической ошибкой.
Это нужно только в тех случаях, когда одинарная кавычка является маркером строки. В VB.Net у вас будет та же проблема, если вы захотите поместить двойную кавычку "
в свою строку, но это будет работать в SQL, как здесь:
DECLARE @SomeString VARCHAR(100) = 'With one double quote"!';
Вы должны мыслить двояко
- Как вы присваиваете значение? (в зависимости от вашей IDE и синтаксического анализатора операторов)
- Какое фактическое значение хранится в переменной (это будет использоваться во время выполнения)
Связанный и более очевидный пример:
Очень часто вы видите такой код (присваивание)
string SomeString = "Some text/nwith a line-break";
что переводится в (фактическое значение)
Some text
with a line-break
person
Shnugo
schedule
25.01.2018
"XYZ INT'ABC"
, она будет удваиваться при передаче на сервер sql, чтобы избежать одинарной кавычки, и вы получите'XYZ INT''ABC'
на сервере sql - person M.Ali   schedule 25.01.2018