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

cih*_*a87 6 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%'
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)

Vin*_*wan 5

试试这个:

创建临时表:

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)


Ind*_*ght 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
Run Code Online (Sandbox Code Playgroud)

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