我正在尝试在MS SQL 2005中编写SQL Select,以执行以下操作:
TABLE_A
包含关键字列表...芦笋,甜菜根,豆类,茄子等(x200)。
TABLE_B
包含一些带有一些长文本的记录(约4000个字符)......
我知道我选择的TABLE_B
内的记录(byID)。
但是,我需要获取TABLE_A
中包含在TABLE_B
记录文本中的记录的候选名单。
我想知道SQLs CONTAINS函数是否有用......但可能不是。
这需要一个超级快速的查询。
干杯
答案 0 :(得分:2)
由于两端的LIKE和通配符,它永远不会超级快。你不能索引它,也没有任何狡猾的技巧。但是,因为您已经过滤了TableB,所以它应该是可以接受的。如果你在tableB中有一百万行,你可以在它运行时去喝咖啡
SELECT
A.KeyWordColumn
FROM
TableA A
JOIN
TableB B ON B.BigTextColumn LIKE '%' + A.KeyWordColumn+ '%'
WHERE
B.ByID = @ID --or constant etc
如果您有全文索引,则可以使用CONTAINS:但不能用于普通的SQL查询
答案 1 :(得分:0)
我会尝试这个
从table_a,table_b中选择关键字 table_b.text喜欢'%'+关键字+'%' 和table_b.Id ='111'