SQL中的Dynamic Like语句

时间:2011-01-06 06:13:01

标签: sql sql-server sql-like

我一直在讨论如何做这件事一段时间,我知道这个网站上的一些天才会有答案。基本上我正在尝试这样做:

SELECT column 
  FROM table 
 WHERE [table].[column] LIKE string1 
       OR [table].[column] LIKE string2 
       OR [table].[column] LIKE string3...

表示存储在表格列中的搜索字符串列表。显然我不能手工为每个字符串做一个类似的声明,因为我希望表是动态的。

任何建议都会很棒。 :d

编辑:

我正在使用MSSQL :(

3 个答案:

答案 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');
相关问题