У меня есть проблемы, выполняющие SQL-оператор от сохраненного proc, имеющего одинарные кавычки. Вот мой запрос из хранимой процедуры, которую я выполняю.
EXEC('UPDATE myTABLE
SET myCOLUMN = (SELECT Replace('OSINGLEQUOTEJOHN DOE','SINGLEQUOTE','''')')
Я пытаюсь обновить столбец "myCOLUMN" таблицы "myTABLE" со значением "O'John Doe"
Фактический запрос похож на это, я пытался упростить его немного в вышеупомянутом примере
EXEC('UPDATE myTABLE
SET myCOLUMN = (SELECT Replace('+ @IntegrationGuardian2FullName +','SINGLEQUOTE','''')')
Значение @IntegrationGuardian2FullName
"OSINGLEQUOTEJOHN DOE". Надежда, которая имеет больше смысла.
Какое-либо тело может помочь мне форматирующий этот запрос?
Использование:
EXEC('UPDATE myTABLE
SET myCOLUMN = (SELECT REPLACE(''OSINGLEQUOTEJOHN DOE'',
''SINGLEQUOTE'',
''''''''))')
Для того, что вы предоставили, потребовались две одинарные кавычки вокруг строки и то, что нужно заменить, и дополнительные одинарные кавычки из-за экранирования одинарной кавычки, необходимого для динамического SQL.
UPDATE myTABLE SET myCOLUMN='O''John Doe'
EXEC('UPDATE myTABLE SET myCOLUMN=''O''John Doe''')
Вам нужно дважды экранировать одинарную кавычку внутри цитируемой строки - поэтому используйте две одинарные кавычки, чтобы обернуть строку, и четыре (т.е. две экранированные кавычки), которые будут экранированы в пара одинарных кавычек при синтаксическом анализе запроса, а затем неэкранированный снова в одинарную кавычку, которую вы действительно хотите вставить:
EXEC('UPDATE myTable SET myColumn = ''John''''O Doe''')