【问题标题】:Unordered words matching in LIKE clause T-SQLLIKE子句T-SQL中匹配的无序词
【发布时间】:2016-02-18 07:59:02
【问题描述】:

因为我不能评论这篇文章:MySql: unordered words matching in like clause

由于我的 stackoverflow 声誉点低,并且“答案”明确表示不要求澄清、帮助等。我必须提出自己的问题。

情况:

我正在使用 T-SQL,我已经创建了一个带有视图作为表的存储过程,在这个表中是一个包含 3 个字段(姓+给定名称+id)的数据作为 searchColumn 的列。 我的 C# 应用程序将一个 searchString 传递到我的存储过程中,该字符串始终以 % 开头,所有空格都被替换为 %。 结果应该是得到 searchColumn 包含 searchString 输入的所有行。 所以当搜索字符串是%mai%han%19% 它应该给我所有姓氏包含 mai、名字包含 han 且 id 包含 19 的人。 好吧,到目前为止,这一切都很好。 问题是,当 searchString 包含 %19%han%mai% 时,它不再起作用,因为它不是正确的顺序。

问题: 所以问题是(就像我已经发布的链接) 在like子句中匹配的无序词? 但与链接不同,解决方案应该在T-SQL中。

有人知道怎么做吗?

提前谢谢你 萨布丽娜

【问题讨论】:

    标签: sql-server tsql string-matching


    【解决方案1】:

    另一个完全实现目标的解决方案:

    ALTER PROCEDURE [dbo].[DATABASE]
        @searchfield NVARCHAR(1000)
    AS
    BEGIN 
    declare @sql varchar(2000)
    declare @search varchar(500), @count int, @part varchar(500), @rest varchar(500)
    
    set @count = 0
    
    set @search = @searchfield  
    
    set @part = (substring(@search,0,@count))
    
    set @rest = (substring(@search,@count+1,len(@search)))
    
    set @sql = 'select * from [dbo].[DATABASE]'
    
    set @count = charindex('%', @search)
    
    set @part = (substring(@search,0,@count))
    
    set @rest = (substring(@search,@count+1,len(@search)))
    
    set @sql = @sql + ' where searchString like ''%'+ @part +'%'''
    
    if(@count > 1 AND @count != 1)
    BEGIN 
        WHILE (@count != 0)
        BEGIN       
            set @count = CHARINDEX('%', @rest)
            set @part = (SUBSTRING(@rest, 0, @count))       
            set @rest = (SUBSTRING(@rest, @count+1, len(@rest)))
            set @sql = @sql + ' AND searchString like ''%' + @part + '%'''
        END
    END
    SET NOCOUNT ON;
    EXEC (@sql)
    END
    

    希望这对其他人也有帮助:) 我的一位同事帮助了我,非常感谢他。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-02
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      相关资源
      最近更新 更多