我想在查询中使用很多LIKE条件.我找不到实用的解决方案.我试过CONTAINS,但它不起作用.
而不是使用这个
where EIO.DigiAddress like '%abc@abc.com%'
or EIO.DigiAddress like '%def@def.com%'
or EIO.DigiAddress like '%ghi@ghi.com%'
Run Code Online (Sandbox Code Playgroud)
我想用这样的东西:
CONTAINS(EIO.DigiAddress,'%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud)
要么
EIO.DigiAddress IN ('%abc@abc.com%', '%def@def.com%', '%ghi@ghi.com%')
Run Code Online (Sandbox Code Playgroud)
试试这个:
创建临时表:
CREATE TEMPORARY TABLE temp (
alternate VARCHAR(20)
);
Run Code Online (Sandbox Code Playgroud)
然后:
INSERT INTO temp
VALUES ('%abc@abc.com%'), ('%def@def.com%'), ('%ghi@ghi.com%');
Run Code Online (Sandbox Code Playgroud)
选择:
SELECT t.*
FROM tbl t JOIN temp p ON (t.col LIKE p.alternate);
Run Code Online (Sandbox Code Playgroud)
我不认为使用 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
Run Code Online (Sandbox Code Playgroud)
注意:您必须根据您使用的数据库对 PATINDEX 使用相关的字符串函数。
| 归档时间: |
|
| 查看次数: |
5938 次 |
| 最近记录: |