在 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 搜索由未知数量的空格分隔的单词的主要内容,如果未能解决你的问题,请参考以下文章