【问题标题】:Incorrect SQL Syntax - Unclosed quotation mark after the character string不正确的 SQL 语法 - 字符串后的未闭合引号
【发布时间】:2019-06-15 05:29:54
【问题描述】:

现在我有字符串a = "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'." 用于过滤

我正在使用替换 ("'","''") 代替 (”%”,”[%]”) 替换 ("[","[[]")

结果是字符串 strSQL =

select * from studiologs 
where [Message] 
like '%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-server-2005


    【解决方案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%'
    

    具体取决于您搜索的内容

    【讨论】:

    • 谢谢,但现在我使用了 %paramenter% select * from studiologs where [Message] like '%Unclosed quotes after the string ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date 这样的条件DESC''。 ''%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC''.%' 附近的语法不正确我认为 % 字符有错误,但我无法修复它。请帮帮我
    • 我已经编辑了我的答案。请运行我的回答中的两个查询,看看您是否仍然收到错误。你不应该得到任何东西。
    【解决方案2】:

    我会在这里做的最好的事情是将你的 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
    

    试试看,告诉我结果如何。

    【讨论】:

    • 我曾尝试使用 Query SQL select * from studiologs where [Message] like '%[Unclosed quotes after the string '%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'。 '%Bamboo.Widgets.RequestApproval.CollectTask ORDER BY Date DESC'.]%' ESCAPE '\' 附近的语法不正确,但结果总是 null 请告诉我为什么?
    • 您需要在需要转义的每个功能字符之前使用转义字符。所以在每个基于% 的字符串和每个基于' 的字符串之前,所以将其更改为:select * from studiologs where [Message] like '%\[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\'\.\]%' ESCAPE '\' 假设您需要保留第一个和最后一个% 在@ 987654328@声明。
    猜你喜欢
    • 2015-03-20
    • 2011-02-10
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    相关资源
    最近更新 更多