2010-08-06 32 views
0

現在,我在字符串'%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'之後有字符串a =「未封閉引號。 Widgets.RequestApproval.CollectTask ORDER BY日期DESC'。「對於濾波器不正確的SQL語法 - 字符串後面的未封閉引號

我使用替換( 「'」, 「 '」') 替換( 「%」, 「[%]」) 替換( 「[」, 「[[]」)

和我的結果是字符串strSQL = select * from studiologs where [Message] like'%Unclosed quotation mark after the character string''Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC''。不正確的語法附近「」%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY日期降序'%」

,但結果始終是空 請幫我更換此字符串過濾

感謝所有

回答

1

我想你已經錯過了在查詢的末尾多了一個引號 -

select * from studiologs where [Message] like '%Unclosed quotation mark after the character string ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC''%' 

或刪除最後一個引號爲好,如果你的字符串沒有'

select * from studiologs where [Message] like '%Unclosed quotation mark after the character string ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC%' 

根據您正在尋找究竟是什麼

+0

謝謝,但現在我使用像%paramenter%條件 SELECT * FROM studiologs 其中[信息] 像 '的字符串之後%閉合的引號 '' %Bamboo.Widgets.RequestApproval.CollectTask ORDER BY日期降序' 」。 '%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'附近的語法不正確'%' 我認爲%字符出錯,但我無法修復它。請幫助我 – user412814 2010-08-06 09:11:35

+0

我編輯了我的答案。請運行我的答案中的兩個查詢,看看你是否仍然有錯誤。你不應該得到任何。 – 2010-08-06 09:20:38

1
我會在這裏做

最好的事情是你的SQL查詢轉移到一個程序,這樣,你給它的字符串不會需要在字符串中過濾的標點符號會不是會影響查詢的語法。

因此,像這樣:

USE MYDATABASE 
CREATE PROC GET_STUDIO_LOGS 
@INPUT_STRING AS NVARCHAR(1024) 
AS 
BEGIN 
SELECT * FROM STUDIOLOGS WHERE [Message] LIKE '%' + @INPUT_STRING + '%' 
END 


EXEC GET_STUDIO_LOGS 'Unclosed quotation mark after the character string ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC''. Incorrect syntax near ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC''.' 

如果你使用一個程序提交SQL,那麼你可以提交該字符串參數,因爲它是沒有標點符號的任何變化。在SQL中本地執行此操作時,只需爲要作爲字符串一部分的每個引號添加另一個'(引號)。

如果你試圖逃脫%標誌,你可以先設置一個轉義字符:

SET ESCAPE '\'; 
SELECT '\%abc' FROM Table 

嘗試了這一點,告訴我是怎麼回事。

+0

我試着用查詢SQL select * from studiologs where [Message] like'%\ [字符串'%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'後面的未使用引號。 '%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'附近的語法不正確。]%'ESCAPE'\' 但結果始終爲空 請告訴我爲什麼? – user412814 2010-08-06 10:06:11

+0

您需要在每個需要轉義的功能字符前使用轉義字符。因此,在每個基於'%'的字符串和基於''的每個字符串之前''' 因此將其更改爲: 'select * from studiologs where [Message] like'%\ [字符串之後的未引用引號\'\ Bamboo .Widgets.RequestApproval.CollectTask ORDER BY Date DESC \'\。錯誤的語法附近''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY日期DESC \'\。\]%'ESCAPE'\'' 這應該做的伎倆,假設你需要*保持*第一個和最後' ''''''語句中的'%'。 – 2010-08-06 11:43:07

相關問題