2010-08-06 103 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