programing

포스트그레스:json 문자열을 텍스트로 변환하는 방법

fastcode 2023. 3. 26. 11:52
반응형

포스트그레스:json 문자열을 텍스트로 변환하는 방법

Json 값은 문자열 값으로 구성될 수 있습니다.예:

postgres=# SELECT to_json('Some "text"'::TEXT);
     to_json
-----------------
 "Some \"text\""

이 문자열을 postgres 텍스트 값으로 추출하려면 어떻게 해야 합니까?

::TEXT동작하지 않습니다.원래 문자열이 아닌 따옴표로 묶인 json을 반환합니다.

postgres=# SELECT to_json('Some "text"'::TEXT)::TEXT;
     to_json
-----------------
 "Some \"text\""

감사해요.

P.S. Postgre를 사용하고 있습니다.SQL 9.3

9.4.4에서는 연산자를 사용하는 것이 좋습니다.

select to_json('test'::text) #>> '{}';

테이블 열과 함께 사용하려면:

select jsoncol #>> '{}' from mytable;

Postgre에서는 방법이 없다.SQL을 사용하여 스칼라 JSON 개체를 구성합니다.그래서, 당신이 지적한마디로

select  length(to_json('Some "text"'::TEXT) ::TEXT);

15살,

요령은 JSON을 1개의 JSON 요소의 배열로 변환한 후 다음 명령을 사용하여 해당 요소를 추출하는 것입니다.->>.

select length( array_to_json(array[to_json('Some "text"'::TEXT)])->>0 );

11이 반환됩니다.

Mr.Quious도 이것에 대해 궁금해했다.에 덧붙여#>> '{}'연산자, 9.6+에서는 jsonb 문자열의 값을 얻을 수 있습니다.->>연산자:

select to_jsonb('Some "text"'::TEXT)->>0;
  ?column?
-------------
 Some "text"
(1 row)

json 값이 있는 경우 솔루션은 먼저 jsonb에 캐스트하는 것입니다.

select to_json('Some "text"'::TEXT)::jsonb->>0;
  ?column?
-------------
 Some "text"
(1 row)

-> > 에서는 유효합니다.

postgres 버전:

<postgres.version>11.6</postgres.version>

쿼리:

select object_details->'valuationDate' as asofJson, object_details->>'valuationDate' as asofText from MyJsonbTable;

출력:

  asofJson       asofText
"2020-06-26"    2020-06-26
"2020-06-25"    2020-06-25
"2020-06-25"    2020-06-25
"2020-06-25"    2020-06-25

간단한 방법:

SELECT  ('[' || to_json('Some "text"'::TEXT) || ']')::json ->> 0;

json 문자열을 json 목록으로 변환합니다.

언급URL : https://stackoverflow.com/questions/27215216/postgres-how-to-convert-a-json-string-to-text

반응형