【问题标题】:Postgres: Select one language version of the value from Multilanguage columnPostgres:从多语言列中选择一种语言版本的值
【发布时间】:2021-02-12 01:33:50
【问题描述】:

假设我有一个 Postgres 表,其中一个列具有 jsonb 类型来存储多语言值。 这是示例。

|                   word                 |
|----------------------------------------|
|     {"en": "Hello", "es": "Hola"}      |
|     {"it": "Rosso", "es": "Rojo"}      |
|{"en": "Sea", "it": "Mare", "es": "Mar"}|

如您所见,这些值并不总是具有所有语言版本。我的问题是,如果英文版本不存在,我如何只能选择英文版本或 json 中的任何第一个值?

谢谢。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您必须解压缩 JSON:

    SELECT kv.value
    FROM atable
       CROSS JOIN LATERAL jsonb_each(atable.word) AS kv(key,value)
    WHERE atable.id = ...
    ORDER BY kv.key <> 'en'
    LIMIT 1;
    

    这取决于FALSE &lt; TRUE

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      • 2015-08-30
      • 2014-12-27
      • 2018-02-15
      相关资源
      最近更新 更多