由于某种原因,我无法在Google上找到答案!但是,使用SQL包含函数,我怎么能告诉它从一个字符串开始,即I.e我正在寻找相当于 LIKE'some_term%'的全文。SQL Contains - 仅在启动时匹配
我知道我可以使用like,但由于我已经设置了全文索引,并且表格预计有数千行,我宁愿使用Contains。
谢谢!
由于某种原因,我无法在Google上找到答案!但是,使用SQL包含函数,我怎么能告诉它从一个字符串开始,即I.e我正在寻找相当于 LIKE'some_term%'的全文。SQL Contains - 仅在启动时匹配
我知道我可以使用like,但由于我已经设置了全文索引,并且表格预计有数千行,我宁愿使用Contains。
谢谢!
你想是这样的:
而不是指定多个方面,可以使用“前缀术语”如果 术语具有相同字符开头。要使用前缀字词,请指定 开头的字符,然后在该字词的结尾 处添加星号(*)通配符。将前缀术语用双引号括起来。以下 语句返回与上一个相同的结果。
-- Search for all terms that begin with 'storm'
SELECT StormID, StormHead, StormBody FROM StormyWeather
WHERE CONTAINS(StormHead, '"storm*"')
http://www.simple-talk.com/sql/learn-sql-server/full-text-indexing-workbench/
我能想到的它实际上在前面加上一个独特的词表中的每个字段开头的唯一解决方案。
例如更新每一行,使'xfirstword'出现在文本的开头(例如Field1)。然后你可以搜索CONTAINS(Field1,'NEAR((xfirstword,“TERM *”),0)')
很糟糕的解决方案,尤其是我们知道全文索引存储每个单词的实际位置文字(详见此链接:http://msdn.microsoft.com/en-us/library/ms142551.aspx)
我正面临类似的问题。这是我作为解决方案而实施的。
请你告诉我,如果你尝试了一些其他更好的办法
可以使用包含与LIKE子查询匹配仅仅是一个开始:
SELECT *
FROM (
SELECT *
FROM myTable WHERE CONTAINS('"Alice in wonderland"')
) AS S1
WHERE S1.edition LIKE 'Alice in wonderland%'
这样,慢的像查询将被打击较小的运行设置
对不起,应该是:LIKE“some_term%” – Umair
但是,这是我所期待的,全文相当于LIKE“someword%”。我只希望它在字符串的开头寻找术语。抱歉混淆。 – Umair
啊 - 确定 - 好,然后检查了Johnie卡尔的回答 - 他展示了如何做到这一点,并有很大的联系,太! –