SQL包含或包含自由文本
我试图在SQL编程中使用CONTAINS或FREETEXT,以便能够同时搜索两个单词。问题是,当您搜索两个单词FREETEXT或CONTAINS时,将按列而不是按行搜索,例如: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
假设这是我的数据库
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。查看此帖子上的建议: