【问题标题】:PostgreSQL similar to operator behaviourPostgreSQL 类似算子的行为
【发布时间】:2017-11-04 04:48:08
【问题描述】:

我发现 PostgreSQL 类似于 operator 的工作有点奇怪。我不小心在下面的查询中检查了空间,但对结果感到惊讶。

select 'Device Reprocessing' similar to '%( )%' --return true select 'Device Reprocessing' similar to '%()%' --return true select 'DeviceReprocessing' similar to '%()%' --return true

为什么第二个和第三个查询返回 true?空模式总是返回 true 吗?

我对 SIMILAR TO 运算符的理解是根据其模式是否与给定字符串匹配返回 true 或 false。

【问题讨论】:

标签: postgresql


【解决方案1】:

您已经定义了一个没有任何内容的组,这意味着任何内容都会匹配。我想你会发现任何字符串匹配%()%,甚至是一个空字符串。

通常您会使用此分组来列出选项:

select 'DeviceReprocessing' similar to '%(Davinci|Dog)%'

将返回 false,因为它既不包含“Davinci”也不包含“Dog”,但是:

select 'DeviceReprocessing' similar to '%(vice|Dog)%'

将返回 true,因为它确实包含至少一个选项。

您的第一个条件为真,因为表达式确实包含空格。

我实际上更喜欢不需要% 通配符的正则表达式表示法:

select 'DeviceReprocessing' ~ 'vice|Dog'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-24
    • 2019-07-26
    • 1970-01-01
    • 2015-12-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2017-08-12
    相关资源
    最近更新 更多