반응형
postgresql에서 jsonb 키의 문자열 대신 부울 값을 반환하려면 어떻게 해야 합니까?
다음 쿼리에서는 $isComplete와 $isValid가 문자열로 반환됩니다.단, 부울값으로 저장됩니다.이러한 필드의 부울 표현을 반환하려면 어떻게 해야 합니까?
query =
"SELECT
data #>> '{id}' AS id,
data #>> '{name}' AS name,
data #>> '{curator}' AS curator,
data #> '{$isValid}' as \"$isValid\",
data #> '{customer}' as customer,
data #> '{$createdTS}' as \"$createdTS\",
data #> '{$updatedTS}' as \"$updatedTS\",
data #> '{$isComplete}' as \"$isComplete\",
(count(keys))::numeric as \"numProducts\"
FROM
appointment_intakes,
LATERAL jsonb_object_keys(data #> '{products}') keys
GROUP BY id"
텍스트를 부울로 캐스팅하기만 하면 됩니다.
create table jsonb_test (id int, data jsonb);
insert into jsonb_test values
(1, '{"is_boolean" : true}'),
(2, '{"is_boolean" : false}');
select id, data, (data->>'is_boolean')::boolean as is_boolean
from jsonb_test
where (data->>'is_boolean')::boolean
id | data | is_boolean
----+------------------------+------------
1 | {"is_boolean": true} | t
(1 row)
다른 json 텍스트 값을 부울에 캐스트할 수도 있습니다.예:
insert into jsonb_test values
(3, '{"is_boolean" : "true"}'),
(4, '{"is_boolean" : "false"}'),
(5, '{"is_boolean" : "t"}'),
(6, '{"is_boolean" : "f"}'),
(7, '{"is_boolean" : "on"}'),
(8, '{"is_boolean" : "off"}');
select id, data, (data->>'is_boolean')::boolean as is_boolean
from jsonb_test
where (data->>'is_boolean')::boolean
id | data | is_boolean
----+------------------------+------------
1 | {"is_boolean": true} | t
3 | {"is_boolean": "true"} | t
5 | {"is_boolean": "t"} | t
7 | {"is_boolean": "on"} | t
(4 rows)
설명서에서 부울 유형에 대한 올바른 리터럴에 대해 읽어 보십시오.
갱신하다
Postgres 11은 JSONB 스칼라에서 수치 및 부울 데이터 유형에 캐스트를 추가합니다.이 쿼리는 일반적인 부울 JSONB 스칼라(즉,true
또는false
):
select id, data, (data->'is_boolean')::boolean as is_boolean
from jsonb_test
where (data->'is_boolean')::boolean
언급URL : https://stackoverflow.com/questions/33041617/in-postgresql-how-can-i-return-a-boolean-value-instead-of-string-on-a-jsonb-key
반응형
'source' 카테고리의 다른 글
MySql을 위한 샘플 MongoDB 데이터베이스가 있습니까? (0) | 2023.02.28 |
---|---|
오류 가져오기 - 'angular' 이름을 찾을 수 없습니다. (0) | 2023.02.28 |
관리 링크에 404 WordPress가 표시됨 (0) | 2023.02.28 |
setState 메서드를 호출하면 상태가 즉시 변환되지 않는 이유는 무엇입니까? (0) | 2023.02.28 |
Woocommerce의 Linked Product에서 커스텀 필드를 추가하는 방법 (0) | 2023.02.28 |