지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.15. 토토 사이트 함수 및 연산자

표 9-42두 개의 토토 사이트 데이터 유형과 함께 사용할 수 있는 연산자를 표시합니다(참조섹션 8.14).

표 9-42.토토 사이트그리고토토 사이트b운영자

운영자 오른쪽 피연산자 유형 설명 예시 결과
- int 토토 사이트 배열 요소 가져오기(0부터 색인화됨, 음의 정수는 끝부터 계산됨) '["a":"foo","b":"bar","c":"baz"]'::토토 사이트-2 "c":"baz"
- 텍스트 키로 토토 사이트 객체 필드 가져오기 '"a": "b":"foo"'::토토 사이트-'a' "b":"foo"
- int JSON 배열 요소를 다음으로 가져오기텍스트 '[1,2,3]'::토토 사이트-2 3
- 텍스트 JSON 객체 필드를 다음으로 가져오기텍스트 '"a":1,"b":2'::토토 사이트-'b' 2
# 텍스트[] 지정된 경로에서 토토 사이트 객체 가져오기 '"a": "b":"c": "foo"'::토토 사이트#'a,b' "c": "foo"
# 텍스트[] 지정된 경로에서 JSON 객체를 다음과 같이 가져옵니다.텍스트 '"a":[1,2,3],"b":[4,5,6]'::토토 사이트#'a,2' 3

참고:두 가지 모두에 대해 이러한 연산자의 병렬 변형이 있습니다.토토 사이트그리고토토 사이트b유형. 필드/요소/경로 추출 연산자는 왼쪽 입력과 동일한 유형을 반환합니다(둘 중 하나)토토 사이트또는토토 사이트b), 반환으로 지정된 항목 제외텍스트, 값을 텍스트로 강제 변환합니다. 필드/요소/경로 추출 연산자는 JSON 입력에 요청과 일치하는 올바른 구조가 없는 경우 실패하지 않고 NULL을 반환합니다. 예를 들어 그러한 요소가 존재하지 않는 경우. 정수 JSON 배열 첨자를 허용하는 필드/요소/경로 추출 연산자는 모두 배열 끝에서 음수 첨자를 지원합니다.

다음에 표시된 표준 비교 연산자표 9-1사용 가능토토 사이트b, 하지만 다음의 경우는 아님토토 사이트. 이는 다음에 설명된 B-트리 작업의 순서 규칙을 따릅니다.섹션 8.14.4.

일부 추가 연산자도 다음 용도로만 존재합니다.토토 사이트b, 다음과 같이표 9-43. 이러한 연산자 중 다수는 다음을 통해 색인을 생성할 수 있습니다.토토 사이트b연산자 클래스. 전체 설명을 보려면토토 사이트b격납 및 존재 의미, 참조섹션 8.14.3. 섹션 8.14.4이러한 연산자를 사용하여 효과적으로 색인을 생성하는 방법을 설명합니다.토토 사이트b데이터.

표 9-43. 추가의토토 사이트b연산자

운영자 오른쪽 피연산자 유형 설명
@ 토토 사이트b 왼쪽 토토 사이트 값에는 최상위 수준의 올바른 토토 사이트 경로/값 항목이 포함되어 있습니까? '"a":1, "b":2'::토토 사이트b @ '"b":2'::토토 사이트b
<@ 토토 사이트b 왼쪽 토토 사이트 경로/값 항목이 오른쪽 토토 사이트 값 내 최상위 수준에 포함되어 있습니까? '"b":2'::토토 사이트b <@ '"a":1, "b":2'::토토 사이트b
? 텍스트 다음은문자열토토 사이트 값 내에 최상위 키로 존재합니까? '"a":1, "b":2'::토토 사이트b ? '비'
?| 텍스트[] 다음 배열 중 하나를 수행문자열최상위 키로 존재합니까? '"a":1, "b":2, "c":3'::토토 사이트b ?| 배열['b', 'c']
?& 텍스트[] 이 배열을 모두 수행문자열최상위 키로 존재합니까? '["a", "b"]'::토토 사이트b ?& 배열['a', 'b']
|| 토토 사이트b 두 개 연결토토 사이트b값을 새 값으로토토 사이트b '["a", "b"]'::토토 사이트b || '["c", "d"]'::토토 사이트b
- 텍스트 키/값 쌍 삭제 또는문자열왼쪽 피연산자의 요소입니다. 키-값 쌍은 키 값을 기준으로 일치됩니다. '"a": "b"'::토토 사이트b - 'a'
- 정수 지정된 인덱스가 있는 배열 요소를 삭제합니다(음의 정수는 끝부터 계산됩니다). 최상위 컨테이너가 배열이 아닌 경우 오류가 발생합니다. '["a", "b"]'::토토 사이트b - 1
#- 텍스트[] 지정된 경로가 있는 필드 또는 요소 삭제(JSON 배열의 경우 음의 정수는 끝부터 계산됩니다) '["a", "b":1]'::토토 사이트b #- '1,b'

참고:||연산자는 키의 합집합을 포함하는 객체를 생성하여 두 개의 JSON 객체를 연결하고, 중복 키가 있는 경우 두 번째 객체의 값을 가져옵니다. 다른 모든 경우는 JSON 배열을 생성합니다. 먼저 배열이 아닌 모든 입력이 단일 요소 배열로 변환된 다음 두 배열이 연결됩니다. 재귀적으로 작동하지 않습니다. 최상위 배열 또는 객체 구조만 병합됩니다.

표 9-44생성에 사용할 수 있는 함수를 표시합니다.토토 사이트그리고토토 사이트b값. (동등한 기능이 없습니다.토토 사이트b, 중row_to_토토 사이트그리고array_to_토토 사이트함수. 그러나,to_토토 사이트b함수는 이러한 함수와 거의 동일한 기능을 제공합니다.)

표 9-44. JSON 생성 함수

기능 설명 예시 결과

to_토토 사이트(모든 요소)

to_토토 사이트b(모든 요소)

값을 다음과 같이 반환합니다.토토 사이트또는토토 사이트b. 배열과 복합물은 (재귀적으로) 배열과 객체로 변환됩니다. 그렇지 않은 경우 유형에서 다음으로 캐스트가 있는 경우토토 사이트, 변환을 수행하는 데 캐스트 함수가 사용됩니다. 그렇지 않으면 스칼라 값이 생성됩니다. 숫자, 부울 또는 null 값 이외의 스칼라 유형의 경우 유효한 방식으로 텍스트 표현이 사용됩니다.토토 사이트또는토토 사이트b값. to_토토 사이트('프레드가 "안녕하세요."라고 말했습니다.'::text) "프레드가 \"안녕\"이라고 말했습니다."
array_to_토토 사이트(anyarray [, beautiful_bool]) 배열을 JSON 배열로 반환합니다. PostgreSQL 다차원 배열은 배열의 JSON 배열이 됩니다. 다음과 같은 경우 차원-1 요소 사이에 줄 바꿈이 추가됩니다.pretty_bool사실입니다. array_to_토토 사이트('1,5,99,100'::int[]) [[1,5],[99,100]]
row_to_토토 사이트(레코드 [, beautiful_bool]) 행을 JSON 개체로 반환합니다. 다음과 같은 경우 레벨 1 요소 사이에 줄바꿈이 추가됩니다.pretty_bool사실입니다. row_to_토토 사이트(row(1,'foo')) "f1":1,"f2":"foo"

토토 사이트_build_array(VARIADIC "모든")

토토 사이트b_build_array(VARIADIC "모든")

가변 인수 목록에서 이종 유형의 토토 사이트 배열을 구축합니다. 토토 사이트_build_array(1,2,'3',4,5) [1, 2, "3", 4, 5]

토토 사이트_build_object(VARIADIC "모든")

토토 사이트b_build_object(VARIADIC "모든")

가변 인수 목록에서 토토 사이트 개체를 구축합니다. 관례적으로 인수 목록은 교대로 키와 값으로 구성됩니다. 토토 사이트_build_object('foo',1,'bar',2) "foo": 1, "bar": 2

토토 사이트_object(text[])

토토 사이트b_object(text[])

텍스트 배열에서 JSON 개체를 만듭니다. 배열에는 짝수의 멤버가 포함된 정확히 1차원(이 경우 대체 키/값 쌍으로 간주됨)이 있거나, 각 내부 배열에 정확히 2개의 요소가 포함되어 키/값 쌍으로 간주되는 2차원이 있어야 합니다.

토토 사이트_object('a, 1, b, "def", c, 3.5')

토토 사이트_object('a, 1,b, "def",c, 3.5')

"a": "1", "b": "def", "c": "3.5"

토토 사이트_object(키 텍스트[], 값 텍스트[])

토토 사이트b_object(키 텍스트[], 값 텍스트[])

이 형태는토토 사이트_object두 개의 개별 배열에서 키와 값을 쌍으로 가져옵니다. 다른 모든 측면에서는 단일 인수 형식과 동일합니다. 토토 사이트_object('a, b', '1,2') "a": "1", "b": "2"

참고: array_to_토토 사이트그리고row_to_토토 사이트다음과 동일한 동작을 가짐to_토토 사이트예쁜 인쇄 옵션을 제공하는 것은 제외됩니다. 설명된 동작은to_토토 사이트다른 토토 사이트 생성 함수로 변환된 각 개별 값에도 마찬가지로 적용됩니다.

참고:PostgreSQL : 문서 : 9.6 : 사설 토토확장 프로그램이 다음에서 캐스트되었습니다.hstore토토 사이트그러니까hstoreJSON 생성 함수를 통해 변환된 값은 기본 문자열 값이 아닌 JSON 개체로 표시됩니다.

표 9-45처리에 사용할 수 있는 기능을 표시토토 사이트그리고토토 사이트b값.

표 9-45. JSON 처리 함수

기능 반환 유형 설명 예시 결과

토토 사이트_array_length(토토 사이트)

토토 사이트b_array_length(토토 사이트b)

int 가장 바깥쪽 토토 사이트 배열의 요소 수를 반환합니다. 토토 사이트_array_length('[1,2,3,"f1":1,"f2":[5,6],4]') 5

토토 사이트_each(토토 사이트)

토토 사이트b_each(토토 사이트b)

키 텍스트 집합, 값 토토 사이트

키 텍스트 집합, 값 토토 사이트b

가장 바깥쪽 토토 사이트 개체를 키/값 쌍 세트로 확장합니다. 토토 사이트_each('"a":"foo", "b":"bar"')에서 * 선택
키 | 가치
------+-------
 | "푸"
 비 | "바"

토토 사이트_each_text(토토 사이트)

토토 사이트b_each_text(토토 사이트b)

키 텍스트 집합, 값 텍스트 가장 바깥쪽 토토 사이트 개체를 키/값 쌍 세트로 확장합니다. 반환된 값은 다음과 같습니다.텍스트. 토토 사이트_each_text('"a":"foo", "b":"bar"')에서 * 선택
키 | 가치
------+-------
 | 푸
 비 | 바

토토 사이트_extract_path(from_토토 사이트 토토 사이트, VARIADIC path_elems 텍스트[])

토토 사이트b_extract_path(from_토토 사이트 토토 사이트b, VARIADIC path_elems 텍스트[])

토토 사이트

토토 사이트b

다음이 가리키는 JSON 값을 반환합니다.path_elems(동등함#연산자). 토토 사이트_extract_path('"f2":"f3":1,"f4":"f5":99,"f6":"foo"','f4') "f5":99,"f6":"foo"

토토 사이트_extract_path_text(from_토토 사이트 토토 사이트, VARIADIC path_elems 텍스트[])

토토 사이트b_extract_path_text(from_토토 사이트 토토 사이트b, VARIADIC path_elems 텍스트[])

텍스트 다음이 가리키는 JSON 값을 반환합니다.path_elemsas텍스트(동등함#연산자). 토토 사이트_extract_path_text('"f2":"f3":1,"f4":"f5":99,"f6":"foo"','f4', 'f6') foo

토토 사이트_object_keys(토토 사이트)

토토 사이트b_object_keys(토토 사이트b)

텍스트 집합 가장 바깥쪽 토토 사이트 객체의 키 세트를 반환합니다. 토토 사이트_object_keys('"f1":"abc","f2":"f3":"a", "f4":"b"')
토토 사이트_object_keys
------------------
 f1
 f2

토토 사이트_populate_record(기본 모든 요소, from_토토 사이트 토토 사이트)

토토 사이트b_populate_record(기본 모든 요소, from_토토 사이트 토토 사이트b)

모든 요소 객체를 확장합니다from_토토 사이트열이 정의된 레코드 유형과 일치하는 행에베이스(아래 참고 참조). 토토 사이트_populate_record(null::myrowtype, '"a":1,"b":2')에서 * 선택
a | 비
---+---
 1 | 2

토토 사이트_populate_recordset(기본 모든 요소, from_토토 사이트 토토 사이트)

토토 사이트b_populate_recordset(기본 모든 요소, from_토토 사이트 토토 사이트b)

모든 요소의 집합 객체의 가장 바깥쪽 배열을 확장합니다.from_토토 사이트열이 정의된 레코드 유형과 일치하는 행 집합으로베이스(아래 참고 참조). 토토 사이트_populate_recordset에서 * 선택(null::myrowtype, '["a":1,"b":2,"a":3,"b":4]')
a | 비
---+---
 1 | 2
 3 | 4

토토 사이트_array_elements(토토 사이트)

토토 사이트b_array_elements(토토 사이트b)

토토 사이트 집합

토토 사이트b 집합

토토 사이트 배열을 토토 사이트 값 세트로 확장합니다. 토토 사이트_array_elements에서 * 선택('[1,true, [2,false]]')
값
-----------
 1
 사실
 [2,거짓]

토토 사이트_array_elements_text(토토 사이트)

토토 사이트b_array_elements_text(토토 사이트b)

텍스트 집합 JSON 배열을 다음 집합으로 확장합니다.텍스트값. 토토 사이트_array_elements_text('["foo", "bar"]')에서 * 선택
값
-----------
 푸
 바

토토 사이트_typeof(토토 사이트)

토토 사이트b_typeof(토토 사이트b)

텍스트 가장 바깥쪽 JSON 값의 유형을 텍스트 문자열로 반환합니다. 가능한 유형은 다음과 같습니다.객체, 배열, 문자열, 번호, 부울. 토토 사이트_typeof('-123.4') 번호

토토 사이트_to_record(토토 사이트)

토토 사이트b_to_record(토토 사이트b)

기록 JSON 개체에서 임의의 레코드를 작성합니다(아래 참고 참조). 반환되는 모든 함수와 마찬가지로기록, 호출자는를 사용하여 레코드의 구조를 명시적으로 정의해야 합니다.AS절. 토토 사이트_to_record('"a":1,"b":[1,2,3],"c":"bar"')에서 *를 x(a int, b text, d text)로 선택
a |    비 | 디
---+---------+---
 1 | [1,2,3] |

토토 사이트_to_recordset(토토 사이트)

토토 사이트b_to_recordset(토토 사이트b)

레코드 집합 JSON 개체 배열에서 임의의 레코드 세트를 만듭니다(아래 참고 참조). 반환되는 모든 함수와 마찬가지로기록, 호출자는를 사용하여 레코드의 구조를 명시적으로 정의해야 합니다.AS절. 토토 사이트_to_recordset('["a":1,"b":"foo","a":"2","c":"bar"]')에서 *를 x(a int, b text)로 선택;
a |  비
---+-----
 1 | 푸
 2 |

토토 사이트_strip_nulls(from_토토 사이트 토토 사이트)

토토 사이트b_strip_nulls(from_토토 사이트 토토 사이트b)

토토 사이트

토토 사이트b

반품from_토토 사이트Null 값이 있는 모든 개체 필드는 생략됩니다. 다른 null 값은 그대로 유지됩니다. 토토 사이트_strip_nulls('["f1":1,"f2":null,2,null,3]') ["f1":1,2,null,3]

토토 사이트b_set(대상 토토 사이트b, 경로 텍스트[], new_value 토토 사이트b [, create_missing 부울])

토토 사이트b

반품대상다음으로 지정된 섹션 포함경로다음으로 대체됨new_value또는new_value만약에 추가됨create_missing참입니다(기본값은) 및에 의해 지정된 항목경로존재하지 않습니다. 경로 지향 연산자와 마찬가지로, 다음에 나타나는 음의 정수는경로JSON 배열의 끝부터 계산합니다.

토토 사이트b_set('["f1":1,"f2":null,2,null,3]', '0,f1','[2,3,4]', false)

토토 사이트b_set('["f1":1,"f2":null,2]', '0,f3','[2,3,4]')

["f1":[2,3,4],"f2":null,2,null,3]

["f1": 1, "f2": null, "f3": [2, 3, 4], 2]

토토 사이트b_insert(대상 토토 사이트b, 경로 텍스트[], new_value 토토 사이트b [, insert_after 부울])

토토 사이트b

반환대상함께new_value삽입되었습니다. 만일대상다음으로 지정된 섹션경로JSONB 배열에 있습니다.new_value대상 앞이나 뒤에 삽입됩니다.insert_after참입니다(기본값은거짓). 만일대상다음으로 지정된 섹션경로토토 사이트B 개체에 있습니다.new_value다음의 경우에만 삽입됩니다대상존재하지 않습니다. 경로 지향 연산자와 마찬가지로, 다음에 나타나는 음의 정수는경로JSON 배열의 끝부터 계산합니다.

토토 사이트b_insert('"a": [0,1,2]', 'a, 1', '"new_value"')

토토 사이트b_insert('"a": [0,1,2]', 'a, 1', '"new_value"', true)

"a": [0, "new_value", 1, 2]

"a": [0, 1, "new_value", 2]

토토 사이트b_pretty(from_토토 사이트 토토 사이트b)

텍스트

반환from_토토 사이트들여쓰기된 JSON 텍스트로. 토토 사이트b_pretty('["f1":1,"f2":null,2,null,3]')
[

        "f1": 1,
        "f2": null
    ,
    2,
    널,
    3
]

참고:이러한 함수 및 연산자 중 다수는 JSON 문자열의 유니코드 이스케이프를 적절한 단일 문자로 변환합니다. 입력이 유형인 경우에는 문제가 되지 않습니다.토토 사이트b, 변환이 이미 완료되었기 때문입니다. 하지만토토 사이트입력하면 다음에 설명된 대로 오류가 발생할 수 있습니다.섹션 8.14.

참고:함수에 대한 예제는 동안토토 사이트_populate_record, 토토 사이트_populate_recordset, 토토 사이트_to_record그리고토토 사이트_to_recordset상수를 사용합니다. 일반적인 용도는 다음에서 테이블을 참조하는 것입니다.발신절 중 하나를 사용하여토토 사이트또는토토 사이트b열을 함수에 대한 인수로 사용합니다. 추출된 키 값은 다음과 같은 쿼리의 다른 부분에서 참조될 수 있습니다.어디에서절 및 대상 목록. 이러한 방식으로 여러 값을 추출하면 키별 연산자를 사용하여 개별적으로 추출하는 것보다 성능이 향상될 수 있습니다.

JSON 키는 대상 행 유형의 동일한 열 이름과 일치합니다. 이러한 함수에 대한 JSON 유형 강제는 다음과 같습니다."최선의 노력"일부 유형에서는 원하는 값이 나오지 않을 수 있습니다. 대상 행 유형에 표시되지 않는 JSON 필드는 출력에서 생략되며 JSON 필드와 일치하지 않는 대상 열은 단순히 NULL이 됩니다.

참고:모든 항목경로매개변수토토 사이트b_set또한토토 사이트b_insert단, 마지막 항목은 다음에 있어야 합니다.대상. 만일create_missing거짓입니다. 모든 항목은경로매개변수토토 사이트b_set반드시 존재해야 합니다. 이러한 조건이 충족되지 않으면대상변경되지 않은 상태로 반환됩니다.

마지막 경로 항목이 개체 키인 경우, 그것이 없으면 새 값이 주어지고 생성됩니다. 마지막 경로 항목이 배열 인덱스인 경우 양수이면 설정할 항목을 왼쪽부터 세기, 음수이면 오른쪽부터 세기 --1가장 오른쪽 요소를 지정합니다. 항목이 -array_length .. array_length -1 범위를 벗어나고 create_missing이 true인 경우 항목이 음수이면 배열의 시작 부분에 새 값이 추가되고 양수이면 배열의 끝에 추가됩니다.

참고:토토 사이트_typeof함수반환 값을 SQL NULL과 혼동해서는 안 됩니다. 통화 중토토 사이트_typeof('null'::토토 사이트)반환할 것이다, 전화 중토토 사이트_typeof(NULL::토토 사이트)SQL NULL을 반환합니다.

참고:인수가토토 사이트_strip_nulls객체에 중복된 필드 이름이 포함되어 있으면 결과는 발생 순서에 따라 의미상 다소 다를 수 있습니다. 이것은 문제가 되지 않습니다.토토 사이트b_strip_nulls이후토토 사이트b값에는 중복된 개체 필드 이름이 없습니다.

또한 참조PostgreSQL : 문서 : 9.6 : 와이즈 토토 함수집계 함수용토토 사이트_agg레코드 값을 JSON으로 집계하고 집계 함수토토 사이트_object_agg값 쌍을 JSON 객체로 집계하고 해당토토 사이트b등가물,토토 사이트b_agg그리고토토 사이트b_object_agg.