Удалить двойные кавычки из возврата функции в 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": "бензин", "fr-FR": "сущность"}. Как я могу опустить двойные кавычки, чтобы вернуть только строку результата?

Ответы

Ответ 1

Оператор -> возвращает результат json. Передача text в text оставляет его в рецензии json.

Оператор ->> возвращает text. Используйте это вместо этого.

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

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