【问题标题】:PostgreSQL pattern LIKE not matching simple examplePostgreSQL 模式 LIKE 不匹配简单示例
【发布时间】:2021-03-09 11:49:39
【问题描述】:

您好,我不明白为什么我的模式不起作用。这似乎与我在 Internet 上看到的许多示例相同。你能帮忙吗?

select city from cities where city like 'ny';

56 rows

select city from cities where city like '[a-z][a-z]';

0 row

【问题讨论】:

  • 显示示例输入数据。但我不知道为什么你认为like 支持正则表达式,当文档声明必须使用其他函数时:postgresql.org/docs/9.0/functions-matching.html“我在互联网上看到的许多示例”如果没有引用就毫无用处,尤其是如果他们参考其他类型的SQL。
  • 所有行都是'ny'
  • 字符范围不是标准 LIKE 运算符的一部分,尽管一些 SQL 方言将其作为扩展提供 - 最值得注意的是 T-SQL,SQL Server 使用的方言,这可能是您的示例正在使用。

标签: regex postgresql sql-like


【解决方案1】:

LIKE 不是正则表达式的比较器 (Documentation)

您应该使用~ 比较器或SIMILAR TO:

demo:db<>fiddle

SELECT
    *
FROM cities
WHERE city ~ '[a-z][a-z]';

SELECT
    *
FROM cities
WHERE city SIMILAR TO '[a-z][a-z]';

【讨论】:

  • 你忘了^和$。
  • 好吧,我只是演示了比较器的用法;)如果 TO 确实需要定义开始和结束,那么你是对的,当然。
  • 不,您不需要^ 和$。 SIMILAR TO(和LIKE)模式必须匹配整个字符串/字段。
  • 感谢您的支持。如果它解决了您的问题,请不要忘记接受这个问题! :)
猜你喜欢
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多