Skip to main content
Documents
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

PostgreSQL Like

PostgreSQL 没有 LIKE IN 运算符的直接组合,但你可以通过在 SQL 语句中使用 LIKE 和 IN 运算符的组合来实现类似功能,或者使用 PostgreSQL 提供的正则表达式功能来实现更灵活的模糊匹配。

实现方法

结合使用 LIKE 和 IN

如果你想在一个列表中查找包含特定模式的字符串,你可以先构建一个包含 LIKE 表达式的列表,然后将这个列表传递给 IN 子句。

SELECT *
FROM TABLE_NAME
WHERE column_name LIKE ANY (ARRAY['%pattern1%', '%pattern2%', '%pattern3%']);
  • LIKE ANY 会检查 column_name 是否匹配 ARRAY 中的任何一个 LIKE 模式
  • %pattern% 是一个通配符,表示可以匹配任何字符序列

使用正则表达式(Regexp)功能

PostgreSQL 支持强大的正则表达式,可以通过其正则表达式运算符实现更灵活的模式匹配。

  • ~ 运算符:匹配大小写敏感的正则表达式
  • ~* 运算符:匹配大小写不敏感的正则表达式
SELECT *
FROM TABLE_NAME
WHERE column_name ~* 'pattern1|pattern2|pattern3';
  • | 是正则表达式中的“或”操作符,在这里表示匹配 pattern1 或 pattern2 或 pattern3。
  • 这个正则表达式也可以用来查找包含这些模式的字符串

总结

虽然 PostgreSQL 没有内置 LIKE IN 这种语法糖,但你可以通过 LIKE ANY 子句来组合模糊匹配和列表查找,或者利用其强大的正则表达式功能来实现类似的功能,以满足不同的模糊匹配需求。