| 롤 토토 : 문서 : 9.5 : 롤 토토 | |||
|---|---|---|---|
| PostgreSQL : 문서 : 9.5 : 윈 토토 기능 | PostgreSQL : 문서 : 9.5 : 젠 토토 및 연산자 | 9장. 함수 및 연산자 | PostgreSQL : 문서 : 9.5 : 토토 핫 조작 함수 | 
표 9-40두 개의 토토 사이트 데이터 유형과 함께 사용할 수 있는 연산자를 표시합니다(참조섹션 8.14).
표 9-40.토토 사이트그리고토토 사이트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-41. 이러한 연산자 중 다수는 다음을 통해 색인을 생성할 수 있습니다.토토 사이트b연산자 클래스. 전체 설명을 보려면토토 사이트b격납 및 존재 의미, 참조섹션 8.14.3. 섹션 8.14.4이러한 연산자를 사용하여 효과적으로 색인을 생성하는 방법을 설명합니다.토토 사이트b데이터.
표 9-41. 추가토토 사이트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 | 2개 연결토토 사이트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-42생성에 사용할 수 있는 기능을 표시토토 사이트그리고토토 사이트b값. (동등한 기능이 없습니다.토토 사이트b, of therow_to_토토 사이트그리고array_to_토토 사이트함수. 그러나,to_토토 사이트b함수는 이러한 함수와 거의 동일한 기능을 제공합니다.)
표 9-42. 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.5 : 토토 사이트 순위확장 프로그램이 다음에서 캐스트되었습니다.hstore에토토 사이트그러니까hstoreJSON 생성 함수를 통해 변환된 값은 기본 문자열 값이 아닌 JSON 개체로 표시됩니다.
표 9-43처리에 사용할 수 있는 기능을 표시토토 사이트그리고토토 사이트b값.
표 9-43. 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_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다음에 있어야 합니다.대상, 그렇지 않은 경우create_missing은 true입니다. 이 경우 마지막 항목을 제외한 모든 항목이 있어야 합니다. 이러한 조건이 충족되지 않으면대상변경되지 않은 상태로 반환됩니다.
마지막 경로 항목이 개체 키인 경우, 개체 키가 없으면 새 값이 부여되어 생성됩니다. 마지막 경로 항목이 배열 인덱스인 경우 양수이면 설정할 항목을 왼쪽부터 세기, 음수이면 오른쪽부터 세기 --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.5 : 토토 사이트 함수집계 함수용토토 사이트_agg레코드 값을 JSON으로 집계하고 집계 함수토토 사이트_object_agg값 쌍을 JSON 객체로 집계하고 해당토토 사이트b등가물,토토 사이트b_agg그리고토토 사이트b_object_agg.