如何在SQL中轻松使用多个LIKE条件?

时间:2013-04-19 11:46:04

标签: sql sql-like

我想在查询中使用很多LIKE条件。我找不到实用的解决方案。我试过CONTAINS,但它不起作用。

而不是使用此

where EIO.DigiAddress like '%abc@abc.com%'
or EIO.DigiAddress like '%def@def.com%'
or EIO.DigiAddress like '%ghi@ghi.com%'

我想使用这样的东西:

CONTAINS(EIO.DigiAddress,'%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')

OR

EIO.DigiAddress IN ('%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')

3 个答案:

答案 0 :(得分:5)

试试这个:

创建临时表:

CREATE TEMPORARY TABLE temp (
    alternate VARCHAR(20)
);

然后:

INSERT INTO temp
VALUES ('%abc@abc.com%'), ('%def@def.com%'), ('%ghi@ghi.com%');

选择

SELECT t.*
FROM tbl t JOIN temp p ON (t.col LIKE p.alternate);

答案 1 :(得分:2)

我在使用LIKE时没有看到任何错误。但是如果你不喜欢LIKE那么就使用它(对于MS SQLSERVER)

where PATINDEX('%abc@abc.com%', EIO.DigiAddress) >0 OR
      PATINDEX('%def@def.com%', EIO.DigiAddress) >0 OR
      PATINDEX('%ghi@ghi.com%', EIO.DigiAddress) >0

注意:您必须根据您使用的数据库为PATINDEX使用相关的字符串函数。

答案 2 :(得分:1)

您可以使用正则表达式执行此操作:

where EIO.DigiAddress regexp '[a-c|e-g|g-i]{3}@{1}[a-c|e-g|g-i]{3}.com'