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

9.15. 무지개 토토 함수 및 연산자

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

표 9.43. 무지개 토토그리고무지개 토토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. 또한 참조하세요PostgreSQL : 문서 : 11 : 9.20. 윈 토토 기능집계 함수용무지개 토토_agg레코드 값을 집계 함수인 무지개 토토으로 집계합니다.무지개 토토_object_agg값 쌍을 무지개 토토 객체로 집계하고 해당무지개 토토b등가물,무지개 토토b_agg그리고무지개 토토b_object_agg.

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

표 9.44. 추가의무지개 토토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", "c": "d"'::무지개 토토b - 'a,c'::text[]
- 정수 지정된 인덱스를 가진 배열 요소를 삭제합니다(음의 정수는 끝부터 계산됩니다). 최상위 컨테이너가 배열이 아닌 경우 오류가 발생합니다. '["a", "b"]'::무지개 토토b - 1
#- 텍스트[] 지정된 경로가 있는 필드 또는 요소 삭제(JSON 배열의 경우 음의 정수는 끝부터 계산됩니다.) '["a", "b":1]'::무지개 토토b #- '1,b'

참고

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

표 9.45생성에 사용할 수 있는 함수를 표시합니다.무지개 토토그리고무지개 토토b값. (동등한 기능이 없습니다.무지개 토토b, of therow_to_무지개 토토그리고array_to_무지개 토토함수. 그러나,to_무지개 토토b함수는 이러한 함수와 거의 동일한 기능을 제공합니다.)

표 9.45. JSON 생성 함수

기능 설명 예시 결과

to_무지개 토토(모든 요소)

to_무지개 토토b(모든 요소)

값을 다음과 같이 반환합니다.무지개 토토또는무지개 토토b. 배열과 복합물은 (재귀적으로) 배열과 객체로 변환됩니다. 그렇지 않은 경우 유형에서 다음으로 캐스트가 있는 경우무지개 토토, 변환을 수행하는 데 캐스트 함수가 사용됩니다. 그렇지 않으면 스칼라 값이 생성됩니다. 숫자, 부울 또는 null 값이 아닌 스칼라 유형의 경우 유효한 방식으로 텍스트 표현이 사용됩니다.무지개 토토또는무지개 토토b값. to_무지개 토토('프레드가 "안녕하세요."라고 말했습니다.'::text) "프레드가 \"안녕\"이라고 말했습니다."
array_to_무지개 토토(anyarray [, Pretty_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 : 문서 : 11 : F.16. 스포츠 토토 결과확장 프로그램이 다음에서 캐스트되었습니다.hstore무지개 토토그러니까hstoreJSON 생성 함수를 통해 변환된 값은 기본 문자열 값이 아닌 JSON 개체로 표시됩니다.

표 9.46처리에 사용할 수 있는 기능을 표시무지개 토토그리고무지개 토토b값.

표 9.46. 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_무지개 토토열이 정의된 레코드 유형과 일치하는 행에베이스(아래 참고 참조). select * from 무지개 토토_populate_record(null::myrowtype, '"a": 1, "b": ["2", "a b"], "c": "d": 4, "e": "a b c"')
a |   비 |      기음
---+------------+-------------
 1 | 2,"a b" | (4,"a b c")

무지개 토토_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절. select * from 무지개 토토_to_record('"a":1,"b":[1,2,3],"c":[1,2,3],"e":"bar","r": "a": 123, "b": "a b c"') as x(a int, b text, c int[], d text, r 마이로우타입)
a |    비 |    c | 디 |       아르 자형
---+---------+---------+---+---------------
 1 | [1,2,3] | 1,2,3 |   | (123,"abc")

무지개 토토_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.

참고

함수무지개 토토[b]_populate_record, 무지개 토토[b]_populate_recordset, 무지개 토토[b]_to_record그리고무지개 토토[b]_to_recordsetJSON 개체 또는 개체 배열에 대해 작업을 수행하고 이름이 출력 행 유형의 열 이름과 일치하는 키와 연결된 값을 추출합니다. 출력 열 이름과 일치하지 않는 개체 필드는 무시되고, 개체 필드와 일치하지 않는 출력 열은 Null로 채워집니다. JSON 값을 출력 열의 SQL 유형으로 변환하려면 다음 규칙이 순서대로 적용됩니다.

  • 무지개 토토 null 값은 모든 경우에 SQL null로 변환됩니다.

  • 출력 열이 유형인 경우무지개 토토또는무지개 토토b, 무지개 토토 값이 정확하게 재현되었습니다.

  • 출력 열이 복합(행) 유형이고 JSON 값이 JSON 객체인 경우, 객체의 필드는 이러한 규칙의 재귀적 적용에 의해 출력 행 유형의 열로 변환됩니다.

  • 마찬가지로, 출력 열이 배열 유형이고 JSON 값이 JSON 배열인 경우 JSON 배열의 요소는 이러한 규칙을 재귀적으로 적용하여 출력 배열의 요소로 변환됩니다.

  • 그렇지 않으면 JSON 값이 문자열 리터럴인 경우 문자열의 내용은 열의 데이터 유형에 대한 입력 변환 함수에 제공됩니다.

  • 그렇지 않으면 JSON 값의 일반 텍스트 표현이 열의 데이터 유형에 대한 입력 변환 함수에 제공됩니다.

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

참고

모든 항목경로매개변수무지개 토토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값에는 중복된 개체 필드 이름이 없습니다.