Postgres:选择Multilanguage列中值的一种语言版本



假设我有一个Postgres表,其中一列具有jsonb类型,用于存储Multilanguage值。示例如下:

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

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

谢谢。

您必须解压缩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 < TRUE.

相关内容

最新更新