【问题标题】:TSQL syntax for enclosing search terms within brackets用于将搜索词括在括号内的 TSQL 语法
【发布时间】:2012-01-23 08:41:06
【问题描述】:

我相信 [] 在 TSQL 中与 LIKE 子句一起使用时是特殊字符(如果重要的话,SQlserver 2005)。我如何在存储过程中转义搜索词,我在下面做了,但即使存在也不返回有效记录

SELECT * FROM Table WHERE Column LIKE '%['+ @searchedTerm +']'

那么,当像上面那样搜索时,什么是有效的?

【问题讨论】:

    标签: tsql search sql-server-2005 sql-like


    【解决方案1】:

    您需要像这样转义开始(而不是结束)括号:

    LIKE '%[[]' + @searchedTerm + ']'
    

    MSDN page for LIKE 有一个部分“使用通配符作为文字”

    编辑,评论后

    • LIKE '[[]cap]%' 搜索包含字符串 [cap] 的名称
    • LIKE '[wel]%' 搜索包含 其中一个 字母的名称 wel

    【讨论】:

    • 哇,是你,你好吗?顺便说一句,如果搜索词包含列名,那么它应该包含在 [] 中,对吗?所以我试过这个没有结果select * from product where name LIKE '[[]cap]%' 但是这个select * from product where productname LIKE '[wel]%' 似乎工作你知道缺少什么
    • @Deeptechtons:更新的答案。请阅读有关如何使用 LIKE 的 MSDN 文章
    • 被接受为答案,但我如何在 searchterm 中转义列名?
    • 列名可能并不总是用括号括起来
    【解决方案2】:

    试试这个:

    DECLARE @searchedTerm as varchar(50); 
    SET @searchedTerm = 'TEST VALUE'
    
    SELECT * FROM Table WHERE Column LIKE '%[[]' + @searchedTerm +']'
    

    【讨论】:

    • 你的是 Gbn 的一个更简洁的例子,所以我必须投票但不是答案
    【解决方案3】:

    试试这个:

    SELECT * FROM Table WHERE Column LIKE '%/['+ @searchedTerm +']' {escape '/'}

    【讨论】:

    • @Deeptechtons:你至少尝试过我的回答吗?
    猜你喜欢
    • 2014-10-30
    • 2013-05-25
    • 2014-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多