我想在查询中使用很多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%')
答案 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'