2010-07-29 77 views
11

我遇到的問題是執行單引號的存儲過程中的SQL語句。這是我正在執行的存儲過程的查詢。在SQL的Exec語句中使用單引號

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

我試圖更新表「MYTABLE」列「myCOLUMN」與價值「O'John李四」

的實際查詢是這樣的,我試圖把它簡化一點在上面例如

EXEC('UPDATE myTABLE 
     SET myCOLUMN = (SELECT Replace('+ @IntegrationGuardian2FullName +','SINGLEQUOTE','''')') 

@IntegrationGuardian2FullName值是 「OSINGLEQUOTEJOHN DOE」。希望更有意義。

任何機構可以幫助我格式化這個查詢嗎?

回答

17

用途:

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

由於動態SQL所需的單引號轉義,因此您提供的內容需要圍繞字符串使用兩個單引號,以及要替換的內容以及其他單引號。

+0

給出「錯誤的語法附近」)'。「錯誤。 – Mithil 2010-07-29 15:49:50

+0

@Mithil Deshmukh:對不起,忘記了最後一個「)」 - 更正後,適用於SQL Server 2008 Express。 – 2010-07-29 16:06:05

+0

非常感謝OMG Poines,他們做到了。 – Mithil 2010-07-29 18:57:50

1
UPDATE myTABLE SET myCOLUMN='O''John Doe' 

EXEC('UPDATE myTABLE SET myCOLUMN=''O''John Doe''') 
8

您需要雙擊逃脫單引號引用的字符串中 - 因此使用兩個單引號包住字符串和四個(即,兩個轉義引號)將被取消逃進了一對單報價時,查詢分析,然後未逃過再次成單引號,你居然要插入:

EXEC('UPDATE myTable SET myColumn = ''John''''O Doe''') 
+0

謝謝,迪倫,這很有幫助。 – Mithil 2010-07-29 18:58:18

2

儘管OMG Ponies的回答非常完美,並且對我也有幫助,但對我而言並不明顯的事情是如何工作。 以下是我的理解,並可能幫助OP或任何其他人仍在尋找適用於任何情況。

用一個簡單的例子 sp_change_users_login 'update_one', 'LName','Uname'

轉化 select (' sp_change_users_login ''update_one '', ''LName '' ,''Uname '' ')

所有已做的是,as OMG Ponies said,包裝用單引號整個語句()。 然後,對於已經存在(')的每一個單引號,再放置一個引號(')。 我無法大膽的在第二條語句中添加的單引號,使其清晰可見。