假设我有一个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
.