표 9.43두 토토 결과 데이터 유형과 함께 사용할 수있는 연산자를 보여줍니다 (참조PostgreSQL : 문서 : 10 : 8.14. 토토 사이트 유형).
표 9.43. 토토 결과
and토토 결과B
운영자
운영자 | 오른쪽 피연산자 유형 | 설명 | example | 예제 결과 |
---|---|---|---|---|
- |
int |
토토 결과 배열 요소 가져 오기 (0에서 색인화, 끝에서 음수 정수 수) | '[ "a": "foo", "b": "bar", "c": "baz"]':: 토토 결과- 2 |
"c": "baz" |
- |
텍스트 |
key에 의해 토토 결과 객체 필드 가져 오기 | ' "a": "b": "foo"':: 토토 결과- 'a' |
"b": "foo" |
- |
int |
토토 결과 배열 요소 as텍스트 |
'[1,2,3]':: 토토 결과- 2 |
3 |
- |
텍스트 |
토토 결과 개체 필드를 가져옵니다.텍스트 |
' "A": 1, "B": 2':: 토토 결과- 'B' |
2 |
# |
텍스트 [] |
지정된 경로에서 토토 결과 개체 가져 오기 | ' "a": "b": "c": "foo"':: 토토 결과# 'a, b' |
"c": "foo" |
# |
텍스트 [] |
지정된 경로에서 토토 결과 객체를텍스트 |
' "A": [1,2,3], "B": [4,5,6]':: 토토 결과# 'a, 2' |
3 |
두 연산자의 평행 변형이 있습니다.토토 결과
and토토 결과B
유형. 필드/요소/경로 추출 연산자는 왼쪽 입력과 동일한 유형을 반환합니다 (하나토토 결과
또는토토 결과B
), 반환으로 지정된 것을 제외하고.텍스트
, 값을 텍스트로 강요합니다. 토토 결과 입력에 요청과 일치 할 올바른 구조가없는 경우 필드/요소/경로 추출 연산자는 실패하지 않고 NULL을 반환합니다. 예를 들어 그러한 요소가 존재하지 않는 경우. 정수 토토 결과 배열 위트 스크립트를 허용하는 필드/요소/경로 추출 연산자는 모두 배열 끝에서 음수 첨자를 지원합니다.
표준 비교 연산자표 9.1토토 결과B
, 그러나토토 결과
. 그들은 다음에 요약 된 B-tree 운영에 대한 주문 규칙을 따릅니다섹션 8.14.4. 참조 참조PostgreSQL : 문서 : 10 : 9.20. 와이즈 토토 기능집계 함수의 경우토토 결과_AGG
값을 토토 결과, 집계 함수로 기록하는 집계토토 결과_object_agg
어떤 값을 토토 결과 객체에 집계하고토토 결과B
등가,토토 결과B_AGG
and토토 결과b_object_agg
.
일부 추가 연산자도에만 존재합니다토토 결과B
,표 9.44. 이러한 연산자 중 다수는에 의해 색인을 색인화 할 수 있습니다.토토 결과B
운영자 클래스. 에 대한 전체 설명토토 결과B
격리 및 존재 의미, 참조섹션 8.14.3. 섹션 8.14.4이러한 연산자가 효과적으로 색인을 사용하는 방법을 설명합니다토토 결과B
데이터.
표 9.44. 추가의토토 결과B
운영자
운영자 | 오른쪽 피연산자 유형 | 설명 | example |
---|---|---|---|
@ |
토토 결과B |
왼쪽 토토 결과 값에는 최상위 수준의 오른쪽 토토 결과 경로/값 항목이 포함되어 있습니까? | ' "a": 1, "b": 2':: 토토 결과b @ ' "b": 2':: 토토 결과b |
<@ |
토토 결과B |
왼쪽 토토 결과 경로/값 항목은 오른쪽 토토 결과 값 내에서 최상위 레벨에 포함되어 있습니까? | ' "b": 2':: jsonb <@ ' "a": 1, "b": 2':: jsonb |
? |
텍스트 |
String토토 결과 값 내에서 최상위 키로 존재합니까? | ' "a": 1, "b": 2':: 토토 결과b? '비' |
? | |
텍스트 [] |
이 배열을 수행문자열최상위 키로 존재합니까? | ' "a": 1, "b": "2,"c ": 3':: jsonb? | | 배열 [ 'b', 'c'] |
? & |
텍스트 [] |
이 모든 배열을 수행문자열최상위 키로 존재합니까? | '[ "a", "b"]':: jsonb? & array [ 'a', 'b'] |
|| |
토토 결과B |
두 가지토토 결과B 새로운 값토토 결과B value |
'[ "A", "B"]':: 토토 결과B || '[ "C", "D"]' ':: 토토 결과B |
- |
텍스트 |
키/값 쌍 삭제 또는String왼쪽 피연산자의 요소. 키/값 쌍은 키 값에 따라 일치합니다. | ' "a": "b"':: 토토 결과B- 'a' |
- |
텍스트 [] |
다중 키/값 쌍을 삭제하거나String왼쪽 피연산자의 요소. 키/값 쌍은 키 값에 따라 일치합니다. | ' "a": "b", "c": "d"':: 토토 결과b- 'a, c':: text [] |
- |
Integer |
지정된 인덱스로 배열 요소를 삭제합니다 (끝에서 음의 정수 수). 최상위 컨테이너가 배열이 아닌 경우 오류를 던집니다. | '[ "A", "B"]':: 토토 결과B -1 |
#- |
텍스트 [] |
지정된 경로로 필드 또는 요소를 삭제합니다 (토토 결과 어레이의 경우 끝까지 음수 정수 수) | '[ "a", "b": 1]':: jsonb #- '1, b' |
the||
연산자는 키의 결합을 포함하는 객체를 생성하여 두 개의 토토 결과 객체를 연결하여 중복 키가있을 때 두 번째 객체의 값을 취합니다. 다른 모든 경우는 토토 결과 어레이를 생성합니다. 첫째, 비 어레이 입력이 단일 요소 배열로 변환 된 다음 두 배열이 연결됩니다. 그것은 재귀 적으로 작동하지 않습니다. 최상위 배열 또는 객체 구조 만 병합됩니다.
표 9.45작성에 사용할 수있는 기능을 표시토토 결과
and토토 결과B
값. (에 대한 동등한 함수는 없습니다토토 결과B
,row_to_토토 결과
andarray_to_토토 결과
기능. 그러나TO_토토 결과B
함수는 이러한 함수와 거의 동일한 기능을 제공합니다.)
표 9.45. 토토 결과 제작 기능
기능 | 19899_19912 | example | 예제 결과 |
---|---|---|---|
|
값을 다시 반환합니다토토 결과 또는토토 결과B . 배열 및 복합재는 어레이 및 객체로 (재귀 적으로) 변환됩니다. 그렇지 않으면 유형에서로 캐스트가있는 경우토토 결과 , 캐스트 함수는 변환을 수행하는 데 사용됩니다. 그렇지 않으면 스칼라 값이 생성됩니다. 숫자, 부울 또는 널 값 이외의 스칼라 유형의 경우 텍스트 표현이 유효한 방식으로 사용됩니다토토 결과 또는토토 결과B value. |
TO_토토 결과 ( '프레드는 "안녕."':: 텍스트) |
"Fred Said \"Hi. \ "" |
array_to_토토 결과 (anyArray [, pretty_bool]) |
배열을 토토 결과 배열로 반환합니다. PostgreSQL 다차원 배열은 토토 결과 배열 배열이됩니다. 라인 피드는 Dimension-1 요소간에 추가됩니다.pretty_bool 진실입니다. |
array_to_토토 결과 ( '1,5, 99,100':: int []) |
[[1,5], [99,100]] |
row_to_토토 결과 (레코드 [, pretty_bool]) |
행을 토토 결과 객체로 반환합니다. 라인 피드는 레벨 1 요소간에 추가됩니다.pretty_bool 진실입니다. |
row_to_토토 결과 (Row (1, 'foo')) |
"f1": 1, "f2": "foo" |
|
다양한 인수 목록에서 아마도 이질적인 토토 결과 배열을 구축합니다. | 토토 결과_BUILD_ARRAY (1,2, '3', 4,5) |
[1, 2, "3", 4, 5] |
|
Variadic 인수 목록에서 토토 결과 객체를 빌드합니다. 컨벤션별로, 인수 목록은 교대 키와 값으로 구성됩니다. | 토토 결과_build_object ( 'foo', 1, 'bar', 2) |
"foo": 1, "bar": 2 |
|
텍스트 배열에서 토토 결과 객체를 빌드합니다. 배열에는 짝수의 멤버가있는 정확히 하나의 차원이 있어야하며,이 경우 각각의 내부 배열이 정확히 두 개의 요소를 갖도록 키/값 쌍으로 간주되도록 두 차원으로 간주됩니다.. |
|
"a": "1", "b": "def", "c": "3.5" |
|
이 형태의토토 결과_object 두 개의 별도 배열에서 키와 값을 쌍으로 가져옵니다. 다른 모든 측면에서 그것은 하나의 변호 형식과 동일합니다. |
토토 결과_object ( 'a, b', '1,2') |
"A": "1", "B": "2" |
array_to_토토 결과
androw_to_토토 결과
동일한 동작to_토토 결과
꽤 인쇄 옵션을 제공하지 않는 경우. 설명 된 행동to_토토 결과
마찬가지로 다른 토토 결과 생성 기능에 의해 변환 된 각 개별 값에 적용됩니다.
thePostgreSQL : 문서 : 10 : F.17. 배트맨 토토Extension은HSTORE
to토토 결과
hstore
토토 결과 생성 함수를 통해 변환 된 값은 원시 문자열 값이 아닌 토토 결과 객체로 표시됩니다.
표 9.46처리 할 수있는 기능을 보여줍니다토토 결과
and토토 결과B
값.
표 9.46. 토토 결과 처리 기능
기능 | 반환 유형 | 설명 | example | 결과 |
---|---|---|---|---|
|
int |
가장 바깥 쪽 토토 결과 어레이의 요소 수를 반환합니다. | 토토 결과_array_length ( '[1,2,3, "f1": 1, "f2": [5,6], 4]') |
5 |
|
|
가장 바깥 쪽 토토 결과 객체를 키/값 쌍 세트로 확장합니다. | 토토 결과_each에서 * 선택 * ( ' "a": "foo", "b": "bar"') |
키 | 값 -----+------- A | "foo" B | "술집" |
|
키 텍스트 설정, 값 텍스트 |
가장 바깥 쪽 토토 결과 객체를 키/값 쌍 세트로 확장합니다. 반환 된 값은 유형입니다텍스트 . |
선택 *에서 토토 결과_ECH_TEXT ( ' "a": "foo", "b": "bar"') |
키 | 값 -----+------- A | foo B | 술집 |
|
|
path_elems (동등한# 운영자). |
토토 결과_extract_path ( ' "f2": "f3": 1, "f4": "f5": 99, "f6": "foo"', 'f4') |
"f5": 99, "f6": "foo" |
|
텍스트 |
path_elems as텍스트 (동등한# 운영자). |
json_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 |
|
Anylement |
객체를 확장합니다from_토토 결과 열이 열이 정의 된 레코드 유형과 일치하는 행으로base (아래 참고 참조). |
토토 결과_populate_record에서 * 선택 * 선택 *에서 * 선택 * null :: myrowtype, ' "a": 1, "b": [ "2", "a b"], "c": "d": 4, "e": "a b c"') |
a | B | 기음 ---+-----------+------------ 1 | 2, "a b" | (4, "A B C") |
|
모든 요소 설정 |
객체의 가장 바깥 쪽 배열을 확장합니다from_토토 결과 열이 정의 된 레코드 유형과 일치하는 행 세트에베이스 (아래 참고 참조). |
토토 결과_populate_recordset에서 * 선택 * 선택 * (null :: myrowtype, '[ "a": ":"b ": 2, "a ": 3,"b ": 4] |
a | 비 ---+--- 1 | 2 3 | 4 |
|
|
토토 결과 배열을 토토 결과 값 세트로 확장합니다. | 선택 *에서 토토 결과_array_elements ( '[1, true, [2, false]' ') |
값 ---------- 1 진실 [2, false] |
|
텍스트 설정 |
토토 결과 배열을 세트로 확장합니다텍스트 값. |
선택 *에서 json_array_elements_text ( '[ "foo", "bar"]') |
값 ---------- foo 술집 |
|
텍스트 |
가장 바깥 쪽 json 값의 유형을 텍스트 문자열로 반환합니다. 가능한 유형은개체 , 배열 , String , 번호 , 부울 및NULL . |
토토 결과_typeof ( '-123.4') |
번호 |
|
레코드 |
토토 결과 객체에서 임의의 레코드를 작성합니다 (아래 참고 참조). 모든 기능이 반환되는 것과 마찬가지로레코드 , 발신자는 레코드의 구조를 AN으로 명시 적으로 정의해야합니다as 절. |
json_to_record ( ' "a": 1, "b": [1,2,3], "c": [1,2,3], "e": "r": "a": 123, "b": "a b c"') x (a int, b int, b int, c int, c int, c int, c int, in) myrowtype) |
a | B | C | d | 아르 자형 ---+--------+--------+---+------------- 1 | [1,2,3] | 1,2,3 | | (123, "A B C") |
|
Setof Record |
토토 결과 배열로부터 임의의 레코드 세트를 작성합니다 (아래 참고 참조). 모든 기능이 반환되는 것과 마찬가지로레코드 , 발신자는 레코드의 구조를 AN으로 명시 적으로 정의해야합니다as 절. |
json_to_recordset ( '[ "a": 1, "b": "foo", "a": "2", "c": "bar"]')))))) x (a int, b text); |
a | 비 ---+----- 1 | foo 2 | |
|
|
반환from_토토 결과 null 값이 생략 된 모든 객체 필드가 있습니다. 다른 널 값은 손대지 않았습니다. |
토토 결과_strip_nulls ( '[ "f1": 1, "f2": null, 2, null, 3]') |
[ "f1": 1, 2, null, 3] |
|
|
반환대상 PATH 대체new_value 또는 withnew_value if 추가create_missing true (기본값은true ) 및 지정된 항목PATH 존재하지 않습니다. 경로 지향 연산자와 마찬가지로,에 나타나는 부정적인 정수PATH 토토 결과 어레이의 끝에서 카운트. |
|
|
|
|
반환대상 withnew_value 삽입. 만약에대상 섹션으로 지정된PATH jsonb 배열에 있습니다.new_value 대상 앞이나 IF 이후에 삽입됩니다insert_after true (기본값은거짓 ). 만약에대상 PATH 토토 결과b 객체에 있습니다.new_value 대상 존재하지 않습니다. 경로 지향 연산자와 마찬가지로,에 나타나는 부정적인 정수PATH 토토 결과 어레이의 끝에서 카운트. |
|
|
|
|
반환From_토토 결과 들여 쓰기 토토 결과 텍스트. |
토토 결과b_pretty ( '[ "f1": 1, "f2": null, 2, null, 3]') |
[ "F1": 1, "F2": NULL , 2, 널, 3 ] |
이러한 기능과 연산자 중 다수는 토토 결과 문자열의 유니 코드 이스케이프를 적절한 단일 문자로 변환합니다. 입력이 유형 인 경우 문제가 아닌 경우토토 결과B
, 전환이 이미 완료 되었기 때문에; 하지만토토 결과
입력, 이로 인해 언급 된대로 오류가 발생할 수 있습니다.PostgreSQL : 문서 : 10 : 8.14. 토토 사이트 유형.
함수토토 결과 [B] _populate_record
, 토토 결과 [B] _populate_recordset
, 토토 결과 [B] _TO_RECORD
and토토 결과 [B] _TO_RECORDSET
토토 결과 객체 또는 객체 배열에서 작동하고 이름이 출력 행 유형의 열 이름과 일치하는 키와 관련된 값을 추출합니다. 출력 열 이름에 해당하지 않는 객체 필드는 무시되며 객체 필드와 일치하지 않는 출력 열에는 널로 채워집니다. 토토 결과 값을 SQL 유형의 출력 열로 변환하려면 다음 규칙이 순서대로 적용됩니다.
토토 결과 NULL 값은 모든 경우에 SQL NULL로 변환됩니다.
출력 열이 유형 인 경우토토 결과
또는토토 결과B
, 토토 결과 값은 정확히 재현되었습니다.
출력 열이 합성 (행) 유형이고 토토 결과 값이 토토 결과 객체 인 경우 객체의 필드는이 규칙의 재귀 적 응용 프로그램에 의해 출력 행 유형의 열로 변환됩니다..
마찬가지로, 출력 열이 배열 유형이고 토토 결과 값이 토토 결과 배열 인 경우 토토 결과 배열의 요소는이 규칙의 재귀 적 적용에 의해 출력 배열의 요소로 변환됩니다..
그렇지 않으면, 토토 결과 값이 문자열 리터럴 인 경우 문자열의 내용은 열의 데이터 유형의 입력 변환 함수에 공급됩니다..
그렇지 않으면, 토토 결과 값의 일반 텍스트 표현은 열의 데이터 유형의 입력 변환 함수에 공급됩니다.
이러한 함수의 예제는 상수를 사용하는 반면, 일반적인 사용은의 표를 참조하는 것입니다.From
절 중 하나를 사용하고 그 중 하나를 사용하십시오토토 결과
또는토토 결과B
함수에 대한 인수로서 열. 그런 다음 추출 된 주요 값은 쿼리의 다른 부분에서 참조 할 수 있습니다.여기서
조항 및 대상 목록. 이러한 방식으로 여러 값을 추출하면 키 당 연산자와 별도로 추출하는 것보다 성능이 향상 될 수 있습니다.
의 모든 항목PATH
매개 변수토토 결과B_SET
뿐만 아니라토토 결과B_INSERT
마지막 항목을 제외하고대상
. 만약에create_missing
거짓입니다.PATH
매개 변수토토 결과B_SET
있어야합니다. 이러한 조건이 충족되지 않으면대상
변경되지 않은 것으로 반환됩니다.
마지막 경로 항목이 객체 키 인 경우, 새로운 값이 없으면 생성됩니다. 마지막 경로 항목이 배열 인덱스 인 경우 양수 인 경우 설정할 항목은 왼쪽에서 계산하여 찾아서 오른쪽에서 계산하여 음수 인 경우 --1
가장 오른쪽 요소 등을 지정합니다. 항목이 범위를 벗어난 경우 -array_length.
the토토 결과_typeof
기능NULL
반환 값은 SQL NULL과 혼동해서는 안됩니다. 전화하는 동안토토 결과_typeof ( 'null':: json)
복귀 할 것입니다NULL
, 전화토토 결과_typeof (null :: json)
SQL NULL을 반환합니다.
인수가토토 결과_STRIP_NULLS
모든 객체에 중복 필드 이름을 포함하면 결과가 발생하는 순서에 따라 의미 적으로 다소 다를 수 있습니다. 이것은에 대한 문제가 아닙니다.토토 결과B_STRIP_NULLS
이후토토 결과B
값은 중복 객체 필드 이름이 없습니다.