首页 > 解决方案 > 为什么这些非常相似的 jsonpath 之一有效,而另一个无效?

问题描述

在调试来自 ORM 的查询时遇到了这个问题,不知道为什么会发生这种情况。问主要是出于好奇。在 PostgreSQL 12.5 中会发生以下情况:

-- All good:
select ('$[*] ? (@.live_at <= 2020-11-18)')::jsonpath

jsonpath                               |
---------------------------------------|
$[*]?(@."live_at" <= (2020 - 11) - 18) |

-- But then:
select ('$[*] ? (@.live_at <= 2020-05-18)')::jsonpath

SQL Error [42601]: ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9
  SQL Error [42601]: ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9
    SQL Error [42601]: ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9
      SQL Error [42601]: ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9
        ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9
        ERROR: syntax error, unexpected IDENT_P at end of jsonpath input
  Position: 9

我怀疑这与八进制表示有关,但节点似乎吃得2020-05-18很好。是什么赋予了?

标签: postgresqljsonbjsonpath

解决方案


推荐阅读