【问题标题】:Select query in row_to_json function在 row_to_json 函数中选择查询
【发布时间】:2014-08-29 08:40:20
【问题描述】:

例如, 我使用以下函数将rows 中的json 转换为PostgreSQL 9.2 中的json

select row_to_json(row(productid, product)) from gtab04;

这将返回以下结果

row_to_json
---------------
{"f1":3029,"f2":"DIBIZIDE M TAB"}
{"f1":3026,"f2":"MELMET 1000 SR TAB"}
{"f1":2715,"f2":"GLUCORED FORTE"}
{"f1":3377,"f2":"AZINDICA 500 TAB"}
  • 不幸的是,它丢失了字段名称并将其替换为 f1、f2、f3 等。
  • 如何获取实际的字段名称或转换字段名称?

【问题讨论】:

    标签: sql json postgresql postgresql-9.2 composite-types


    【解决方案1】:

    要解决这个问题,我们必须创建一个行类型并将行强制转换为该类型,或者使用子查询。子查询通常会更容易。

    select row_to_json(t)
    from (
       select productid, product from gtab04
    ) t
    

    【讨论】:

      【解决方案2】:

      如果想阻止子查询,json_build_object() 可能是一种解决方案。它不映射列名,但让我们明确设置 JSON 键。


      查询

      SELECT json_build_object('productid', productid, 'product', product) FROM gtab04;
      
      json_build_object                                
      ------------------
      {"productid":3029,"product":"DIBIZIDE M TAB"}
      {"productid":3026,"product":"MELMET 1000 SR TAB"}
      {"productid":2715,"product":"GLUCORED FORTE"}  
      {"productid":3377,"product":"AZINDICA 500 TAB"}
      

      View on DB Fiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-29
        • 2020-05-22
        • 1970-01-01
        相关资源
        最近更新 更多