개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2
이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다3_스포츠 토토 결과3버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.15. 토토 결과 기능 및 운영자

표 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

note

두 연산자의 평행 변형이 있습니다.토토 결과and토토 결과B유형. 필드/요소/경로 추출 연산자는 왼쪽 입력과 동일한 유형을 반환합니다 (하나토토 결과또는토토 결과B), 반환으로 지정된 것을 제외하고.텍스트, 값을 텍스트로 강요합니다. 토토 결과 입력에 요청과 일치 할 올바른 구조가없는 경우 필드/요소/경로 추출 연산자는 실패하지 않고 NULL을 반환합니다. 예를 들어 그러한 요소가 존재하지 않는 경우. 정수 토토 결과 배열 위트 스크립트를 허용하는 필드/요소/경로 추출 연산자는 모두 배열 끝에서 음수 첨자를 지원합니다.

표준 비교 연산자표 9.1토토 결과B, 그러나토토 결과. 그들은 다음에 요약 된 B-tree 운영에 대한 주문 규칙을 따릅니다섹션 8.14.4. 참조 참조PostgreSQL : 문서 : 10 : 9.20. 와이즈 토토 기능집계 함수의 경우토토 결과_AGG값을 토토 결과, 집계 함수로 기록하는 집계토토 결과_object_agg어떤 값을 토토 결과 객체에 집계하고토토 결과B등가,토토 결과B_AGGand토토 결과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새로운 값토토 결과Bvalue ​​'[ "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'

Note

the||연산자는 키의 결합을 포함하는 객체를 생성하여 두 개의 토토 결과 객체를 연결하여 중복 키가있을 때 두 번째 객체의 값을 취합니다. 다른 모든 경우는 토토 결과 어레이를 생성합니다. 첫째, 비 어레이 입력이 단일 요소 배열로 변환 된 다음 두 배열이 연결됩니다. 그것은 재귀 적으로 작동하지 않습니다. 최상위 배열 또는 객체 구조 만 병합됩니다.

표 9.45작성에 사용할 수있는 기능을 표시토토 결과and토토 결과B값. (에 대한 동등한 함수는 없습니다토토 결과B,row_to_토토 결과andarray_to_토토 결과기능. 그러나TO_토토 결과B함수는 이러한 함수와 거의 동일한 기능을 제공합니다.)

표 9.45. 토토 결과 제작 기능

기능 19899_19912 example 예제 결과

to_토토 결과 (Anylement)

TO_토토 결과B (Anylement)

값을 다시 반환합니다토토 결과또는토토 결과B. 배열 및 복합재는 어레이 및 객체로 (재귀 적으로) 변환됩니다. 그렇지 않으면 유형에서로 캐스트가있는 경우토토 결과, 캐스트 함수는 변환을 수행하는 데 사용됩니다. 그렇지 않으면 스칼라 값이 생성됩니다. 숫자, 부울 또는 널 값 이외의 스칼라 유형의 경우 텍스트 표현이 유효한 방식으로 사용됩니다토토 결과또는토토 결과Bvalue. 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 (variadic "any")

토토 결과B_BUILD_ARRAY (variadic "any")

다양한 인수 목록에서 아마도 이질적인 토토 결과 배열을 구축합니다. 토토 결과_BUILD_ARRAY (1,2, '3', 4,5) [1, 2, "3", 4, 5]

토토 결과_build_object (variadic "any")

토토 결과b_build_object (variadic "any")

Variadic 인수 목록에서 토토 결과 객체를 빌드합니다. 컨벤션별로, 인수 목록은 교대 키와 값으로 구성됩니다. 토토 결과_build_object ( 'foo', 1, 'bar', 2) "foo": 1, "bar": 2

토토 결과_object (text [])

토토 결과b_object (text [])

텍스트 배열에서 토토 결과 객체를 빌드합니다. 배열에는 짝수의 멤버가있는 정확히 하나의 차원이 있어야하며,이 경우 각각의 내부 배열이 정확히 두 개의 요소를 갖도록 키/값 쌍으로 간주되도록 두 차원으로 간주됩니다..

토토 결과_object ( 'a, 1, b, "def", c, 3.5')

토토 결과_object ( 'a, 1, b, "def", c, 3.5')

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

토토 결과_object (keys text [], 값 text [])

토토 결과b_object (keys text [], 값 text [])

이 형태의토토 결과_object두 개의 별도 배열에서 키와 값을 쌍으로 가져옵니다. 다른 모든 측면에서 그것은 하나의 변호 형식과 동일합니다. 토토 결과_object ( 'a, b', '1,2') "A": "1", "B": "2"

Note

array_to_토토 결과androw_to_토토 결과동일한 동작to_토토 결과꽤 인쇄 옵션을 제공하지 않는 경우. 설명 된 행동to_토토 결과마찬가지로 다른 토토 결과 생성 기능에 의해 변환 된 각 개별 값에 적용됩니다.

note

thePostgreSQL : 문서 : 10 : F.17. 배트맨 토토Extension은HSTOREto토토 결과hstore토토 결과 생성 함수를 통해 변환 된 값은 원시 문자열 값이 아닌 토토 결과 객체로 표시됩니다.

표 9.46처리 할 수있는 기능을 보여줍니다토토 결과and토토 결과B값.

표 9.46. 토토 결과 처리 기능

기능 반환 유형 설명 example 결과

토토 결과_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"')
키 | 값
-----+-------
 A | "foo"
 B | "술집"

토토 결과_each_text (토토 결과)

토토 결과B_ECH_TEXT (토토 결과B)

키 텍스트 설정, 값 텍스트 가장 바깥 쪽 토토 결과 객체를 키/값 쌍 세트로 확장합니다. 반환 된 값은 유형입니다텍스트. 선택 *에서 토토 결과_ECH_TEXT ( ' "a": "foo", "b": "bar"')
키 | 값
-----+-------
 A | foo
 B | 술집

토토 결과_extract_path (from_토토 결과 토토 결과, variadic path_elems text [])

토토 결과b_extract_path (from_토토 결과 토토 결과b, variadic path_elems text [])

토토 결과

토토 결과B

path_elems(동등한#운영자). 토토 결과_extract_path ( ' "f2": "f3": 1, "f4": "f5": 99, "f6": "foo"', 'f4') "f5": 99, "f6": "foo"

json_extract_path_text (from_토토 결과 json, variadic path_elems text [])

jsonb_extract_path_text (from_토토 결과 jsonb, variadic path_elems text [])

텍스트 path_elemsas텍스트(동등한#운영자). json_extract_path_text ( ' "f2": "f3": 1, "f4": "f5": 99, "f6": "foo"', 'f4', 'f6') foo

토토 결과_object_keys (json)

토토 결과B_OBJECT_KEYS (토토 결과B)

텍스트 설정 가장 바깥 쪽 토토 결과 객체에서 키 세트를 반환합니다. 토토 결과_object_keys ( ' "f1": "abc", "f2": "f3": "a", "f4": "b"')
토토 결과_object_keys
-----------------
 F1
 F2

토토 결과_POPULE_RECORD (BASE AYLENMENT, FROM_토토 결과 토토 결과)

토토 결과B_POPULE_RECORD (BASE AYLENMENT, FROM_토토 결과 토토 결과B)

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")

토토 결과_POPULE_RECORDSET (BASE AYLENMENT, FROM_토토 결과 토토 결과)

토토 결과B_POPULE_RECORDSET (BASE AYLENMENT, FROM_토토 결과 토토 결과B)

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

토토 결과_array_elements (토토 결과)

토토 결과B_ARRAY_ELEMENTS (토토 결과B)

토토 결과 SETOF 토토 결과

setof jsonb

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

토토 결과_array_elements_text (토토 결과)

토토 결과B_ARRAY_ELEMENTS_TEXT (토토 결과B)

텍스트 설정 토토 결과 배열을 세트로 확장합니다텍스트값. 선택 *에서 json_array_elements_text ( '[ "foo", "bar"]')
값
----------
 foo
 술집

토토 결과_TYPEOF (토토 결과)

토토 결과B_TYPEOF (토토 결과B)

텍스트 가장 바깥 쪽 json 값의 유형을 텍스트 문자열로 반환합니다. 가능한 유형은개체, 배열, String, 번호, 부울NULL. 토토 결과_typeof ( '-123.4') 번호

토토 결과_TO_RECORD (토토 결과)

토토 결과B_TO_RECORD (토토 결과B)

레코드 토토 결과 객체에서 임의의 레코드를 작성합니다 (아래 참고 참조). 모든 기능이 반환되는 것과 마찬가지로레코드, 발신자는 레코드의 구조를 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")

토토 결과_TO_RECORDSET (토토 결과)

토토 결과B_TO_RECORDSET (토토 결과B)

Setof Record 토토 결과 배열로부터 임의의 레코드 세트를 작성합니다 (아래 참고 참조). 모든 기능이 반환되는 것과 마찬가지로레코드, 발신자는 레코드의 구조를 AN으로 명시 적으로 정의해야합니다as절. json_to_recordset ( '[ "a": 1, "b": "foo", "a": "2", "c": "bar"]')))))) x (a int, b text);
a |  비
---+-----
 1 | foo
 2 |

토토 결과_STRIP_NULLS (FROM_토토 결과 토토 결과)

토토 결과B_STRIP_NULLS (FROM_토토 결과 토토 결과B)

토토 결과

토토 결과B

반환from_토토 결과null 값이 생략 된 모든 객체 필드가 ​​있습니다. 다른 널 값은 손대지 않았습니다. 토토 결과_strip_nulls ( '[ "f1": 1, "f2": null, 2, null, 3]') [ "f1": 1, 2, null, 3]

토토 결과B_SET (대상 토토 결과B, PATH TEXT [], NEW_VALUE 토토 결과B [, create_missing boolean])

토토 결과B

반환대상PATH대체new_value또는 withnew_valueif 추가create_missingtrue (기본값은true) 및 지정된 항목PATH존재하지 않습니다. 경로 지향 연산자와 마찬가지로,에 나타나는 부정적인 정수PATH토토 결과 어레이의 끝에서 카운트.

토토 결과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, PATH TEXT [], NEW_VALUE 토토 결과B [, insert_after boolean])

토토 결과B

반환대상withnew_value삽입. 만약에대상섹션으로 지정된PATHjsonb 배열에 있습니다.new_value대상 앞이나 IF 이후에 삽입됩니다insert_aftertrue (기본값은거짓). 만약에대상PATH토토 결과b 객체에 있습니다.new_value대상존재하지 않습니다. 경로 지향 연산자와 마찬가지로,에 나타나는 부정적인 정수PATH토토 결과 어레이의 끝에서 카운트.

토토 결과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_토토 결과들여 쓰기 토토 결과 텍스트. 토토 결과b_pretty ( '[ "f1": 1, "f2": null, 2, null, 3]')
[

        "F1": 1,
        "F2": NULL
    ,
    2,
    널,
    3
]

Note

이러한 기능과 연산자 중 다수는 토토 결과 문자열의 유니 코드 이스케이프를 적절한 단일 문자로 변환합니다. 입력이 유형 인 경우 문제가 아닌 경우토토 결과B, 전환이 이미 완료 되었기 때문에; 하지만토토 결과입력, 이로 인해 언급 된대로 오류가 발생할 수 있습니다.PostgreSQL : 문서 : 10 : 8.14. 토토 사이트 유형.

Note

함수토토 결과 [B] _populate_record, 토토 결과 [B] _populate_recordset, 토토 결과 [B] _TO_RECORDand토토 결과 [B] _TO_RECORDSET토토 결과 객체 또는 객체 배열에서 작동하고 이름이 출력 행 유형의 열 이름과 일치하는 키와 관련된 값을 추출합니다. 출력 열 이름에 해당하지 않는 객체 필드는 무시되며 객체 필드와 일치하지 않는 출력 열에는 널로 채워집니다. 토토 결과 값을 SQL 유형의 출력 열로 변환하려면 다음 규칙이 순서대로 적용됩니다.

  • 토토 결과 NULL 값은 모든 경우에 SQL NULL로 변환됩니다.

  • 출력 열이 유형 인 경우토토 결과또는토토 결과B, 토토 결과 값은 정확히 재현되었습니다.

  • 출력 열이 합성 (행) 유형이고 토토 결과 값이 토토 결과 객체 인 경우 객체의 필드는이 규칙의 재귀 적 응용 프로그램에 의해 출력 행 유형의 열로 변환됩니다..

  • 마찬가지로, 출력 열이 배열 유형이고 토토 결과 값이 토토 결과 배열 인 경우 토토 결과 배열의 요소는이 규칙의 재귀 적 적용에 의해 출력 배열의 요소로 변환됩니다..

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

  • 그렇지 않으면, 토토 결과 값의 일반 텍스트 표현은 열의 데이터 유형의 입력 변환 함수에 공급됩니다.

이러한 함수의 예제는 상수를 사용하는 반면, 일반적인 사용은의 표를 참조하는 것입니다.From절 중 하나를 사용하고 그 중 하나를 사용하십시오토토 결과또는토토 결과B함수에 대한 인수로서 열. 그런 다음 추출 된 주요 값은 쿼리의 다른 부분에서 참조 할 수 있습니다.여기서조항 및 대상 목록. 이러한 방식으로 여러 값을 추출하면 키 당 연산자와 별도로 추출하는 것보다 성능이 향상 될 수 있습니다.

note

의 모든 항목PATH매개 변수토토 결과B_SET뿐만 아니라토토 결과B_INSERT마지막 항목을 제외하고대상. 만약에create_missing거짓입니다.PATH매개 변수토토 결과B_SET있어야합니다. 이러한 조건이 충족되지 않으면대상변경되지 않은 것으로 반환됩니다.

마지막 경로 항목이 객체 키 인 경우, 새로운 값이 없으면 생성됩니다. 마지막 경로 항목이 배열 인덱스 인 경우 양수 인 경우 설정할 항목은 왼쪽에서 계산하여 찾아서 오른쪽에서 계산하여 음수 인 경우 --1가장 오른쪽 요소 등을 지정합니다. 항목이 범위를 벗어난 경우 -array_length.

Note

the토토 결과_typeof기능NULL반환 값은 SQL NULL과 혼동해서는 안됩니다. 전화하는 동안토토 결과_typeof ( 'null':: json)복귀 할 것입니다NULL, 전화토토 결과_typeof (null :: json)SQL NULL을 반환합니다.

note

인수가토토 결과_STRIP_NULLS모든 객체에 중복 필드 이름을 포함하면 결과가 발생하는 순서에 따라 의미 적으로 다소 다를 수 있습니다. 이것은에 대한 문제가 아닙니다.토토 결과B_STRIP_NULLS이후토토 결과B값은 중복 객체 필드 이름이 없습니다.