gpt4 book ai didi

SQL Server - 有没有一种简单的方法可以在搜索时忽略引号?

转载 作者:行者123 更新时间:2023-12-02 21:12:31 25 4
gpt4 key购买 nike

我有一个网站,我需要能够搜索数据并使查询忽略所有引号。

  1. 搜索dondondont并检索包含以下单词开头的行的结果:不要不要不要
  2. 搜索“hello”“hello”hello并检索包含以下单词开头的行的结果: “你好”“你好”你好

注意:我已经删除了传入搜索词的引号

我想知道是否有比以下更简单(或更简洁)的方法:

select Name 
from tbl_MyTable
where (Replace(Replace(Replace(Replace(Replace(Replace(Name,'“',''),'‘',''),'''',''),'"',''),'’',''),'”','') like 'dont%'
or Replace(Replace(Replace(Replace(Replace(Replace(Name,'“',''),'‘',''),'''',''),'"',''),'’',''),'”','') like '% dont%' );

现在,我最好的想法是创建一个包含引号删除版本(前面带有空格)的新列,以便我可以执行以下操作:

select Name 
from tbl_MyTable
where FixedName like '% dont%';

但我真的很想知道这是否可以在不创建新列的情况下完成并使其高效。

最佳答案

使用全文索引而不是 LIKE。

创建全文索引:

http://msdn.microsoft.com/en-us/library/ms187317.aspx

CREATE UNIQUE INDEX ix1 ON tbl_MyTable(YourKey); //unique index required
CREATE FULLTEXT CATALOG ft AS DEFAULT; // ft is your freetext catalog name
CREATE FULLTEXT INDEX ON tbl_MyTable(Name)
KEY INDEX ix1
WITH STOPLIST = SYSTEM; // this is your index and allows you to run the command below

然后使用它来运行您的查询:

SELECT Name 
FROM tbl_MyTable
WHERE FREETEXT(Name, 'dont');

这是处理此类事情最快的技术。如果您使用第三方自由文本引擎,您可以获得更快的速度,但可能没有必要。

关于SQL Server - 有没有一种简单的方法可以在搜索时忽略引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11870555/

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