是否有方法将LIKE
运算符应用于多个值
例如:
SELECT * FROM table WHERE val LIKE ('%xyz%' OR '%abc%')
您可以使用返回所有想要匹配的值的CTE来缩短代码:
WITH cte(val) AS (VALUES ('abc'), ('def'), ('ghi'))
SELECT t.*
FROM tablename t INNER JOIN cte c
ON t.val LIKE '%' || c.val || '%'
如果您在上面的查询中得到重复的行,请使用DISTINCT:
WITH cte(val) AS (VALUES ('abc'), ('def'), ('ghi'))
SELECT DISTINCT t.*
FROM tablename t INNER JOIN cte c
ON t.val LIKE '%' || c.val || '%'
从3.36.0版起,您可以使用REGEXP。
在这种情况下,它将是
SELECT * FROM table WHERE val REGEXP '.*(xyz|abc).*'
您可以放置多个过滤器:
select
*
from table
where 1==1
and ( val like '%xyz%'
or val like '%abc%' )