표 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 : 문서 : 10 : 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 생성 함수
| 기능 | 설명 | 예 | 예시 결과 |
|---|---|---|---|
|
|
값을 다음과 같이 반환합니다.토토 결과또는토토 결과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(1,2,'3',4,5) |
[1, 2, "3", 4, 5] |
|
|
가변 인수 목록에서 토토 결과 개체를 구축합니다. 관례적으로 인수 목록은 교대로 키와 값으로 구성됩니다. | 토토 결과_build_object('foo',1,'bar',2) |
"foo": 1, "bar": 2 |
|
|
텍스트 배열에서 JSON 개체를 만듭니다. 배열에는 짝수의 멤버가 포함된 정확히 1차원(이 경우 대체 키/값 쌍으로 간주됨)이 있거나, 각 내부 배열에 정확히 2개의 요소가 포함되어 키/값 쌍으로 간주되는 2차원이 있어야 합니다. |
|
"a": "1", "b": "def", "c": "3.5" |
|
|
이 형태는토토 결과_object두 개의 개별 배열에서 키와 값을 쌍으로 가져옵니다. 다른 모든 측면에서는 단일 인수 형식과 동일합니다. |
토토 결과_object('a, b', '1,2') |
"a": "1", "b": "2" |
array_to_토토 결과그리고row_to_토토 결과다음과 동일한 동작을 가짐to_토토 결과예쁜 인쇄 옵션을 제공하는 것은 제외됩니다. 설명된 동작은to_토토 결과마찬가지로 다른 토토 결과 생성 함수에 의해 변환된 각 개별 값에도 적용됩니다.
그PostgreSQL : 문서 : 10 : F.17. 배트맨 토토확장 프로그램이 다음에서 캐스트되었습니다.h스토어에토토 결과그러니까hstoreJSON 생성 함수를 통해 변환된 값은 기본 문자열 값이 아닌 JSON 개체로 표시됩니다.
표 9.46처리에 사용할 수 있는 기능을 표시토토 결과그리고토토 결과b값.
표 9.46. JSON 처리 함수
| 기능 | 반환 유형 | 설명 | 예 | 예시 결과 |
|---|---|---|---|---|
|
|
int |
가장 바깥쪽 토토 결과 배열의 요소 수를 반환합니다. | 토토 결과_array_length('[1,2,3,"f1":1,"f2":[5,6],4]') |
5 |
|
|
|
가장 바깥쪽 토토 결과 개체를 키/값 쌍 세트로 확장합니다. | 토토 결과_each('"a":"foo", "b":"bar"')에서 * 선택 |
키 | 가치 ------+------- | "푸" 비 | "바" |
|
|
키 텍스트 집합, 값 텍스트 |
가장 바깥쪽 토토 결과 개체를 키/값 쌍 세트로 확장합니다. 반환된 값은 다음과 같습니다.텍스트. |
토토 결과_each_text('"a":"foo", "b":"bar"')에서 * 선택 |
키 | 가치 ------+------- | 푸 비 | 바 |
|
|
|
다음이 가리키는 JSON 값을 반환합니다.path_elems(동등함#연산자). |
토토 결과_extract_path('"f2":"f3":1,"f4":"f5":99,"f6":"foo"','f4') |
"f5":99,"f6":"foo" |
|
|
텍스트 |
다음이 가리키는 JSON 값을 반환합니다.path_elemsas텍스트(동등함#연산자). |
토토 결과_extract_path_text('"f2":"f3":1,"f4":"f5":99,"f6":"foo"','f4', 'f6') |
foo |
|
|
텍스트 집합 |
가장 바깥쪽 토토 결과 객체의 키 세트를 반환합니다. | 토토 결과_object_keys('"f1":"abc","f2":"f3":"a", "f4":"b"') |
토토 결과_object_keys ------------------ f1 f2 |
|
|
모든 요소 |
객체를 확장합니다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") |
|
|
모든 요소의 집합 |
객체의 가장 바깥쪽 배열을 확장합니다.from_토토 결과다음에 의해 정의된 레코드 유형과 일치하는 열을 가진 행 집합으로베이스(아래 참고 참조). |
토토 결과_populate_recordset에서 * 선택(null::myrowtype, '["a":1,"b":2,"a":3,"b":4]') |
a | 비 ---+--- 1 | 2 3 | 4 |
|
|
|
토토 결과 배열을 토토 결과 값 세트로 확장합니다. | 토토 결과_array_elements('[1,true, [2,false]]')에서 * 선택 |
값 ----------- 1 사실 [2,거짓] |
|
|
텍스트 집합 |
JSON 배열을 다음 집합으로 확장합니다.텍스트값. |
토토 결과_array_elements_text('["foo", "bar"]')에서 * 선택 |
값 ----------- 푸 바 |
|
|
텍스트 |
가장 바깥쪽 JSON 값의 유형을 텍스트 문자열로 반환합니다. 가능한 유형은 다음과 같습니다.객체, 배열, 문자열, 번호, 부울및널. |
토토 결과_typeof('-123.4') |
번호 |
|
|
기록 |
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 myrowtype) |
a | 비 | c | 디 | 아르 ---+---------+---------+---+--------------- 1 | [1,2,3] | 1,2,3 | | (123,"abc") |
|
|
레코드 세트 |
JSON 개체 배열에서 임의의 레코드 세트를 만듭니다(아래 참고 참조). 반환되는 모든 함수와 마찬가지로기록, 호출자는를 사용하여 레코드의 구조를 명시적으로 정의해야 합니다.AS절. |
토토 결과_to_recordset('["a":1,"b":"foo","a":"2","c":"bar"]')에서 *를 x(a int, b text)로 선택; |
a | 비 ---+----- 1 | 푸 2 | |
|
|
|
반환from_토토 결과Null 값이 있는 모든 개체 필드는 생략됩니다. 다른 null 값은 그대로 유지됩니다. |
토토 결과_strip_nulls('["f1":1,"f2":null,2,null,3]') |
["f1":1,2,null,3] |
|
|
|
반품대상다음으로 지정된 섹션 포함경로다음으로 대체됨new_value또는new_value만약에 추가됨create_missing참입니다(기본값은참) 및 다음으로 지정된 항목경로존재하지 않습니다. 경로 지향 연산자와 마찬가지로, 다음에 나타나는 음의 정수는경로JSON 배열의 끝부터 계산합니다. |
|
|
|
|
|
반환대상와new_value삽입되었습니다. 만일대상다음으로 지정된 섹션경로JSONB 배열에 있습니다.new_value대상 앞이나 뒤에 삽입됩니다.insert_after참입니다(기본값은거짓). 만일대상다음으로 지정된 섹션경로토토 결과B 개체에 있습니다.new_value다음의 경우에만 삽입됩니다대상존재하지 않습니다. 경로 지향 연산자와 마찬가지로, 다음에 나타나는 음의 정수는경로JSON 배열의 끝부터 계산합니다. |
|
|
|
|
|
반품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값에는 중복된 개체 필드 이름이 없습니다.