gpt4 book ai didi

sql-server - SQL Server 在列中搜索文本

转载 作者:行者123 更新时间:2023-12-04 00:41:44 26 4
gpt4 key购买 nike

我对使用什么感到困惑?

基本上,我需要一个搜索字符串,可以在单个列中搜索多个短语的出现,每个输入短语用空格分隔。

所以来自用户的输入会是这样的:

"Phrase1 Phrase2 ... PhraseX"     (number of phrases can 0 to unknown!, but say < 6)

我需要用逻辑搜索:
Where 'Phrase1%' **AND** 'Phrase2%' **AND** ... 'PhraseX%'

.. 等等... 所以所有的短语都需要找到。

总是合乎逻辑的 AND

SO 速度,性能考虑在内, 我是否使用:

很多
Like 'Phrase1%' and like 'Phrase2%' and like ... 'PhraseX%' ?

或使用
patindex('Phrase1%' , column) > 0 AND  patindex('Phrase2%' , column) > 0 
AND ... patindex('PhraseX%' , column)

或使用

添加全文搜索索引,

使用:
Where Contatins(Column, 'Phrase1*') AND Contatins(Column, 'Phrase2*') AND ... Contatins(Column, 'PhraseX*')



???

几乎太多的选择,这就是为什么我要问,这样做的最有效方法是什么......

你的智慧值得赞赏...

最佳答案

如果您正在搜索 AND,那么正确的通配符搜索将是:

Like '%Phrase1%' and like '%Phrase2%' and like ... '%PhraseX%' 

没有理由使用 patindex()在这里,因为 like足够并且优化良好。优化得很好,但这种情况无法提高效率。这将需要全表扫描。而且,如果文本字段真的非常大(我的意思是至少有数千或数万个字符),性能将不会很好。

解决方案是全文搜索。您可以将其表述为:
where CONTAINS(column, 'Phrase1 AND phrase2 AND . . . ');

这里唯一的问题是您正在寻找的“短语”(似乎是单词)何时是停用词。

总之,如果您有超过几千行或您正在搜索的文本字段有超过几千个字符,那么请使用全文选项。这只是为了指导。如果您正在搜索包含 100 行的引用表并查看最多包含 100 个字符的描述字段,则 like方法应该没问题。

关于sql-server - SQL Server 在列中搜索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com