LIKE 子句中的无序词匹配 T-SQL

Unordered words matching in LIKE clause T-SQL

因为我不能评论这个post:MySql: unordered words matching in like clause

因为我的 Whosebug 声誉点数很低,而且 "answer" 明确表示不要要求澄清、帮助等。我必须提出自己的问题。

情况:

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

问题: 所以问题是(就像 link 我有 postet) like 子句中的无序词匹配? 但与link不同的是,解应该在T-SQL.

有人知道怎么做吗?

提前致谢 萨布丽娜

完全满足目标的另一个解决方案:

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

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