我正在尝试在SQL编程中使用CONTAINS或FREETEXT,以便能够同时搜索两个单词。问题是,当您搜索成对的单词FREETEXT或CONTAINS时,将按列而不是按行搜索,例如:
假设这是我的数据库
id | c1 | c2
===============================
a | 1 | 2
b | 1 | 3
c | 1 | 2
d | 2 | 2
e | 3 | 3
f | 2 | 1 当你搜索CONTAINS(*, '1,2')或off curse FREETEXT(*, '1 2')时,它将返回
id | c1 | c2
===============================
a | 1 | 2
b | 1 | 3
c | 1 | 1
d | 2 | 2
e | 2 | 3
f | 2 | 1 基本上就是整个数据库。但我想要的是这个
id | c1 | c2
===============================
a | 1 | 2
f | 2 | 1 它是包含1和2组合的行。
顺便说一句,我使用的是SQL2008和ASP classic。
我将非常感谢你的建议。
发布于 2011-08-24 03:10:00
我经常遇到这个问题。我使用的解决方案从未真正让我在性能方面感到满意,但它确实有效。它正在连接我正在寻找的值。
SELECT *
FROM (
SELECT (T.C1 + '-' + T.C2) AS C3, *
FROM TABLE T
WHERE T.C1 IN (ALL VALUES FOR C1)
) T2
WHERE T2.C3 IN (ALL CONCATENATED VALUES)如果类型是数字类型,则应使用CONVERT OR CAST TO VARCHAR。
希望这能有所帮助。
编辑:由于缺少索引,我在使用contains时出错。更改为IN。
https://stackoverflow.com/questions/7166103
复制相似问题