json - 如何在 MS SQL Server 中执行像 FOR JSON、OPENJSON 这样的 PostgreSQL 函数?

标签 json postgresql

我将数据库从 MS SQL Server 迁移到 PostgreSQL。

SELECT
     DTL_CODE
    ,DTL_NAME_ENG
FROM DATA_LIST
FOR JSON AUTO

结果:

enter image description here

[{"DTL_CODE":"F","DTL_NAME_ENG":"Female"},{"DTL_CODE":"M","DTL_NAME_ENG":"Male"}]

还有

SELECT
    *
FROM OPENJSON('[{"DTL_CODE":"F","DTL_NAME_ENG":"Female"},{"DTL_CODE":"M","DTL_NAME_ENG":"Male"}]')
WITH (
     DTL_CODE varchar(25)
    ,DTL_NAME_ENG varchar(255)
)

结果:

enter image description here

如何在 PostgreSQL 中执行操作?

我刚刚启动 PostgreSQL,我尝试找到解决方案,但结果为 404。

最佳答案

使用json_array_elements

select j->>'DTL_CODE' as dtl_code,
       j->>'DTL_NAME_ENG' as dtl_name_eng
from json_array_elements(
    '[{"DTL_CODE":"F","DTL_NAME_ENG":"Female"},
      {"DTL_CODE":"M","DTL_NAME_ENG":"Male"}]') as j;

要执行相反的操作,请使用 json_aggjson_build_object

select json_agg(json_build_object('DTL_CODE', 
                dtl_code,'DTL_NAME_ENG' , dtl_name_eng))
from t

DEMO

关于json - 如何在 MS SQL Server 中执行像 FOR JSON、OPENJSON 这样的 PostgreSQL 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56982915/

相关文章:

sql - 如何从前 50 名中随机选择 8 首具有唯一 user_id 的歌曲?

python - Psycopg2 在大型选择查询上用完了内存

postgresql - Debian squeeze backports vs PostgreSQL 9.1

c# - Active Directory OU 树到 jqTree

php - 为什么 PHP json_encode 函数将 UTF-8 字符串转换为十六进制实体?

c# - 如何从 JToken 获取字符串值

sql - 如果一行不存在则插入,否则不要在 postgres 中插入

postgresql - 如何强制 Postgresql 用户使用密码登录

Python:json.loads 在转义时阻塞

sql - Postgres,使用列中的值将结果聚合到单行