Удалить двойные кавычки из возврата функции в 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)