如何找到长度小于或等于.
declare @inp nvarchar(max),@data nvarchar(max)
set @inp='You can dance, you can jive, having .... jove... jve, ...'
set @data = 'jeve'
select @inp as results where @inp like '%' + @data +'%'@inp不返回任何数据,但我想显示:
results
=====
jive
jove
jve发布于 2013-10-08 22:43:02
我从来没有想过SOUNDEX或差别化有那么大的用处,而且现在它们肯定有点过时了。但是,我们可以将它与全文解析器结合起来,它实际上回答了这个查询。注意search语句中的额外引号:
DECLARE @inp NVARCHAR(MAX), @data NVARCHAR(MAX)
SET @inp= '"You can dance, you can jive, having .... jove... jve, ..."'
SET @data = 'jeve'
SELECT display_term, SOUNDEX(display_term) sdx
FROM sys.dm_fts_parser(@inp,0,0,0)
WHERE SOUNDEX(display_term) = SOUNDEX(@data)
AND LEN(display_term) <= LEN(@data)
SELECT display_term, SOUNDEX(display_term) sdx, DIFFERENCE(display_term,@data) diff
FROM sys.dm_fts_parser(@inp,0,0,0)对于这些函数,有一个相当有限的用例,所以如果您有更复杂的示例,那么它们可能不会扩展。不过值得一提的是。
发布于 2013-10-08 17:36:41
最好的选择不是T,而是CLR和正则表达式。
这是一篇让你开始学习的文章
如果这在纯that中是可能的,那么它将需要更多具体的规则来描述什么代表匹配,以及哪些不是,不幸的是,您的用例没有指定。
https://dba.stackexchange.com/questions/41982
复制相似问题