gpt4 book ai didi

json - to_char() 输出为 json 键不是文本? (Postgres)

转载 作者:行者123 更新时间:2023-11-29 13:28:54 25 4
gpt4 key购买 nike

我有一个包含日期名称作为键的 json,我正在尝试使用今天作为键从 json 中选择值,今天是星期四。然而,这并没有按预期工作。

SELECT hoursJson->'normalHours'->'Thursday' FROM BusinessHours;

正确返回 json 中包含的小时数,但是

SELECT hoursJson->'normalHours'->to_char(current_date, 'Day') FROM BusinessHours;

什么都不返回。

为什么 to_char(current_date, 'Day') 不等于 'Thursday'什么时候用作 json 键? to_char() 返回文本所以我不知道为什么这两个键不相等。如何使它们相等,以便我可以将 to_char() 用作 json 键?

谢谢!

最佳答案

您遇到了空白问题。来自fine to_char manual :

Day full capitalized day name (blank-padded to 9 chars)

注意“空白填充”部分。您没有从 to_char 得到 'Thursday',您得到的是 'Thursday ',它们是 JSON 中的不同键。

如果你想继续使用 to_char 那么你将不得不使用类似的东西来处理尾随空格:

...->trim(trailing ' ' from to_char(current_date, 'Day'))
...->regexp_replace(to_char(current_date, 'Day'), '\s+', '')

正在发生的事情的快速演示(将在周四或周五运行):

http://sqlfiddle.com/#!15/2a77b/23

您可能想在 JSON 中使用不同的键,这样您就不必处理空格,或者您可以编写自己的函数来隐藏 to_char修剪肮脏。

关于json - to_char() 输出为 json 键不是文本? (Postgres),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28358841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com