在 T-SQl 中使用 like 搜索由未知数量的空格分隔的单词

Posted

技术标签:

【中文标题】在 T-SQl 中使用 like 搜索由未知数量的空格分隔的单词【英文标题】:Use like in T-SQl to search for words separated by an unknown number of spaces 【发布时间】:2010-09-29 15:57:44 【问题描述】:

我有这个问题:

select * from table where column like '%firstword[something]secondword[something]thirdword%'

我应该用什么替换 [something] 以匹配未知数量的空格?

编辑添加: % 将不起作用,因为它匹配任何字符,而不仅仅是空格。

【问题讨论】:

为了清楚起见,在搜索“The Quick Brown Fox”时,您会想要找到“The_Quick___Brown_Fox”而不是“The_Quickest_Brown_Fox”? (对不起,下划线,SO似乎不喜欢多余的空格) 这是正确的。我完全知道这些词,但根据输入文本的系统和用户,每个词之间可能有任意数量的空格。 【参考方案1】:

也许有点乐观地假设“未知数”包括零。

select * 
from table where 
REPLACE(column_name,' ','') like '%firstwordsecondwordthirdword%'

【讨论】:

我想这就是我需要的。我对未知数(包括零)没有任何问题。 这似乎可以根据需要工作。谢谢!我将此作为公认的答案。【参考方案2】:

以下内容可能会有所帮助:http://blogs.msdn.com/b/sqlclr/archive/2005/06/29/regex.aspx 因为它描述了在 SQL Server 2005 的 SQL 查询中使用正则表达式

【讨论】:

我之前发现了那篇(或类似的)文章。我发现的每一篇文章都只帮助了我已知数量的空间,我正在寻找未知数。也许在 T-SQL 中是不可能的。不会是第一件事。 @Sean - 正则表达式语法肯定会允许这样做。 +1。但是您需要启用 CLR 并安装一个为 .NET 框架 Regex 对象提供外壳的程序集。【参考方案3】:

我肯定会建议清理输入数据,但是当您将其作为SELECT 语句中的函数调用时,此示例可能会起作用。请注意,这可能会非常昂贵。

http://www.bigresource.com/MS_SQL-Replacing-multiple-spaces-with-a-single-space-9llmmF81.html

【讨论】:

以上是关于在 T-SQl 中使用 like 搜索由未知数量的空格分隔的单词的主要内容,如果未能解决你的问题,请参考以下文章

在T-SQL中使用LIKE与存储过程完全匹配?

T-SQL 转义select …. like中的特殊字符(百分号)

全字段多条件搜索(api接口)

将由空格分隔的未知数量的整数读入每行一个向量

T-SQL 中是不是有 LIKE 语句的替代方法?

与 T-sql 的 LIKE 命令等效的天蓝色表存储查询是啥?