Используя одинарную кавычку в операторе Exec в SQL

У меня есть проблемы, выполняющие 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". Надежда, которая имеет больше смысла.

Какое-либо тело может помочь мне форматирующий этот запрос?

16
задан OMG Ponies 29 July 2010 в 16:16
поделиться

3 ответа

Использование:

EXEC('UPDATE myTABLE 
        SET myCOLUMN = (SELECT REPLACE(''OSINGLEQUOTEJOHN DOE'',
                                       ''SINGLEQUOTE'',
                                       ''''''''))')

Для того, что вы предоставили, потребовались две одинарные кавычки вокруг строки и то, что нужно заменить, и дополнительные одинарные кавычки из-за экранирования одинарной кавычки, необходимого для динамического SQL.

21
ответ дан 30 November 2019 в 17:14
поделиться
 UPDATE myTABLE SET myCOLUMN='O''John Doe'

 EXEC('UPDATE myTABLE SET myCOLUMN=''O''John Doe''')
1
ответ дан 30 November 2019 в 17:14
поделиться

Вам нужно дважды экранировать одинарную кавычку внутри цитируемой строки - поэтому используйте две одинарные кавычки, чтобы обернуть строку, и четыре (т.е. две экранированные кавычки), которые будут экранированы в пара одинарных кавычек при синтаксическом анализе запроса, а затем неэкранированный снова в одинарную кавычку, которую вы действительно хотите вставить:

EXEC('UPDATE myTable SET myColumn = ''John''''O Doe''')
9
ответ дан 30 November 2019 в 17:14
поделиться