我想在之后知道很多搜索如何使用标准TSQL将不同的输入变量匹配到一个sql行。下面是这种情况:将输入的多个变体匹配到一个sql行
我有我的SQL行下面的文字:I love
然后我有以下3个输入所有这些都应返回匹配到该行:
“我想告诉你,我们都爱StackOverflow的“
” 我“在罗全中号已经与StackOverflow的”
‘我真的爱StackOverflow的’
正如你可以看到我已经加粗的比赛的原因,试图更清楚你为什么它们匹配。在I'm
I
故意匹配太多,所以如果我们可以在匹配中包含它将是很好。
我想折中一下,我用下面的TSQL完成输入字符串:
-- Create a space delimited string for testing
declare @str varchar(max)
select @str = 'I want to tell you we all love StackOverflow'
-- XML tag the string by replacing spaces with </x><x> tags
declare @xml xml
select @xml = cast('<x><![CDATA['+ replace(@str,' ',']]></x><x><![CDATA[') + ']]></x>' as xml)
-- Finally select values from nodes <x> and trim at the same time
select ltrim(rtrim(mynode.value('.[1]', 'nvarchar(12)'))) as Code
from (select @xml doc) xx
cross apply doc.nodes('/x') (mynode)
这让我所有的话作为单独的行,但后来我不能工作了怎么办查询匹配这些。
因此,从这一点或任何其他方式的匹配所需的任何帮助将不胜感激!
UPDATE:
@freefaller指着我的正则表达式路线,创造一个功能我已经能够得到一点再向前,因此+1 @freefaller,但是我现在需要知道我可以得到它看我所有的表行,而不是硬编码输入“我爱”我现在有以下选择语句:
SELECT * FROM dbo.FindWordsInContext('i love','I want to tell you we all love StackOverflow',30)
SELECT * FROM dbo.FindWordsInContext('i love','I''m totally in love with StackOverflow',30)
SELECT * FROM dbo.FindWordsInContext('i love','I really love StackOverflow',30)
以上返回我的匹配次数和的情况下字符串匹配,因此上面的第一个选择返回:
Hits Context
1 ...I want to tell you we all love StackOv...
因此,根据我们现在有上述的事实,任何人都可以告诉我如何让这个函数查看匹配的所有行,然后返回匹配的行/行?
关于“你喜欢小部件吗?我喜欢。” (相反的顺序) –
使用上面的函数,不幸的是,这似乎非常复杂:-( – Apqu
我认为对于我的需求以任何顺序匹配会给我最好的结果,但我可以妥协,以获得* Something * working。 – Apqu