SQL包含或包含自由文本

SQL包含或包含自由文本,sql,sql-server-2008,Sql,Sql Server 2008,我试图在SQL编程中使用CONTAINS或FREETEXT,以便能够同时搜索两个单词。问题是,当您搜索两个单词FREETEXT或CONTAINS时,将按列而不是按行搜索,例如: 假设这是我的数据库 id | c1 | c2 =============================== a | 1 | 2 b | 1 | 3 c | 1 | 2 d

我试图在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 
当您搜索
包含(*,'1,2')
或关闭
自由文本(*,'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合并的行

顺便说一下,我正在使用SQL 2008和ASP classic


非常感谢您的建议。

我经常遇到这个问题。我使用的解决方案在性能方面从未真正让我满意,但它确实有效。它连接了我正在搜索的值

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或CAST TO VARCHAR

希望这有帮助


编辑:由于缺少索引,我使用contains时出错。换成IN.

我经常遇到这个问题。我使用的解决方案在性能方面从未真正让我满意,但它确实有效。它连接了我正在搜索的值

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或CAST TO VARCHAR

希望这有帮助


编辑:由于缺少索引,我使用contains时出错。更改为IN.

than以获得建议,但我收到了以下错误:“无法对列'C3'使用包含谓词或自由文本谓词,因为它没有全文索引。”我的表已为全文indexed@Jay-我知道,我发帖子后也犯了同样的错误。看看我的编辑。你必须使用容器吗?还是更可取?按照我构建存储过程的方式,是的,我必须使用CONTAINS或FREETEXT。请查看此帖子上的建议:Thans以获取建议,但我遇到了以下错误“无法在列“C3”上使用CONTAINS或FREETEXT谓词,因为它没有全文索引”。我的表已经是全文表indexed@Jay-我知道,我在发帖后也犯了同样的错误。看看我的编辑。你必须使用容器吗?还是更可取?按照我构建存储过程的方式,是的,我必须使用CONTAINS或FREETEXT。查看此帖子上的建议: