我一直在讨论如何做这件事一段时间,我知道这个网站上的一些天才会有答案。基本上我正在尝试这样做:
SELECT column
FROM table
WHERE [table].[column] LIKE string1
OR [table].[column] LIKE string2
OR [table].[column] LIKE string3...
表示存储在表格列中的搜索字符串列表。显然我不能手工为每个字符串做一个类似的声明,因为我希望表是动态的。
任何建议都会很棒。 :d
编辑:
我正在使用MSSQL :(
答案 0 :(得分:21)
使用Params
JOIN
子句将参数(string1,string2,string3 ...)放入表格(LIKE
)然后JOIN
到表格中,例如
SELECT column
FROM table AS T1
INNER JOIN Params AS P1
ON T1.column LIKE '%' + P1.param + '%';
答案 1 :(得分:1)
制作样本Table_1:
id Name
1 Fred
2 Joe
3 Frederick
4 Joseph
5 Kenneth
找到你所有的Freds和Jos代码
SELECT
*
FROM
Table_1
WHERE
name like 'Fred%' OR
name like 'Jo%'
你想要的是一个动态的WHERE。您可以通过将通配符放在Table_2中来实现此目的:
id Search
1 Fred%
2 Jo%
并使用INNER JOIN执行LIKE:
SELECT
*
FROM
Table_1 INNER JOIN Table_2
ON Table_1.name LIKE Table_2.search
结果:
id Name id Search
1 Fred 1 Fred%
3 Frederick 1 Fred%
2 Joe 2 Jo%
4 Joseph 2 Jo%
答案 2 :(得分:0)
听起来你正在尝试进行全文搜索。 MySQL有一个工具:
http://dev.mysql.com/doc/refman/5.0/en/fulltext-boolean.html
SELECT column FROM table MATCH (column) AGAINST ('string1 string2 string3' IN BOOLEAN MODE)
在MSSQL的情况下,有一些信息可用于 http://msdn.microsoft.com/en-us/library/cc879300.aspx
SELECT column FROM table WHERE CONTAINS (column , 'string1 string2 string3');