PostgreSQLには次の機能があります
_CREATE OR REPLACE FUNCTION public.translatejson(JSONB, TEXT)
RETURNS TEXT
AS
$BODY$
SELECT ($1->$2)::TEXT
$BODY$
LANGUAGE sql STABLE;
_
実行すると、二重引用符で囲まれた値を受け取ります。例えば:
SELECT id, translatejson("title", 'en-US') AS "tname" FROM types."FuelTypes";
見返りに私はこのようなテーブルを取得します
_-------------------
| id | tname |
-------------------
| 1 | "gasoline" |
| 2 | "diesel" |
-------------------
_
'title'列の値はJSON形式です:{"en-US": "gasoline"、 "fr-FR": "essence"}。二重引用符を省略して結果の文字列のみを返すにはどうすればよいですか?
->
演算子は、json
の結果を返します。 text
にキャストすると、jsonの表現に残ります。
->>
演算子は、text
の結果を返します。代わりにそれを使用してください。
test=> SELECT '{"car": "going"}'::jsonb -> 'car';
?column?
----------
"going"
(1 row)
test=> SELECT '{"car": "going"}'::jsonb ->> 'car';
?column?
----------
going
(1 row)