web-dev-qa-db-ja.com

PostgreSQLの関数の戻り値から二重引用符を削除します

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"}。二重引用符を省略して結果の文字列のみを返すにはどうすればよいですか?

27
Leo

->演算子は、jsonの結果を返します。 textにキャストすると、jsonの表現に残ります。

->>演算子は、textの結果を返します。代わりにそれを使用してください。

test=> SELECT '{"car": "going"}'::jsonb -> 'car';
 ?column? 
----------
 "going"
(1 row)

test=> SELECT '{"car": "going"}'::jsonb ->> 'car';
 ?column? 
----------
 going
(1 row)
69
Craig Ringer