젠 토토 : 문서 : 9.6 : 젠 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.6 : 토토 꽁 머니 검색 기능 및 연산자 | PostgreSQL : 문서 : 9.6 : 토토 결과 및 연산자 | 제 9 장 기능 및 연산자 | 43_[1,2,3] |[1,2,3] 토토 사이트 |
이 섹션에 설명 된 함수 및 기능과 같은 표현은 유형 값에서 작동합니다사설 토토. 확인하다PostgreSQL : 문서 : 9.6 : 토토 캔 유형에 대한 정보는사설 토토타입. 기능과 같은 표현식사설 토토PARSE
and사설 토토serialize
Type에서 오르기사설 토토여기에서 반복되지 않습니다. 이러한 기능의 대부분을 사용하면 설치가와 함께 구축되어야합니다.구성-with-lib사설 토토.
SQL 데이터에서 사설 토토 컨텐츠를 생성하기 위해 함수 및 기능-유사 표현식을 사용할 수 있습니다. 따라서 클라이언트 애플리케이션에서 처리하기 위해 쿼리 결과를 사설 토토 문서로 형식화하는 데 특히 적합합니다.
사설 토토comment
(텍스트)
함수사설 토토comment
지정된 텍스트를 컨텐츠로 사설 토토 주석을 포함하는 사설 토토 값을 만듭니다. 텍스트는 포함 할 수 없습니다"--"또는 a로 끝납니다."-"결과 구성이 유효한 사설 토토 주석이되도록합니다. 인수가 null이면 결과는 null입니다.
예 :
선택 사설 토토Comment ( 'Hello'); 사설 토토comment -------------- <!-안녕하세요-
사설 토토concat
(사설 토토[, ...])
함수사설 토토concat
사설 토토 컨텐츠 조각을 포함하는 단일 값을 생성하기 위해 개별 사설 토토 값의 목록을 연결합니다. 널 값은 생략됩니다. 결과는 unnull 인수가없는 경우에만 NULL입니다.
예 :
사설 토토CONCAT ( '<abc/', '<bar foo </bar'); 사설 토토concat ------------------------ <ABC/ <bar foo </bar
사설 토토 선언은 현재 존재하는 경우 다음과 같이 결합됩니다. 모든 인수 값에 동일한 사설 토토 버전 선언이있는 경우 해당 버전이 결과에 사용되면 버전이 사용되지 않습니다. 모든 인수 값이 독립형 선언 값을 갖는 경우"예", 그 값은 결과에 사용됩니다. 모든 인수 값이 독립형 선언 값을 가지고 있고 적어도 하나는입니다."아니오", 결과에 사용됩니다. 그렇지 않으면 결과에는 독립형 선언이 없습니다. 결과에 독립형 선언이 필요하지만 버전 선언이없는 경우 사설 토토에 버전 선언을 포함하기 위해 사설 토토 선언이 필요하기 때문에 버전 1.0이있는 버전 선언이 사용됩니다. 인코딩 선언은 모든 경우에 무시되고 제거됩니다.
예 :
사설 토토CONCAT를 선택하십시오 ( '<? 사설 토토 버전 = "1.1"? <foo/', '<? xml 버전 = "1.1"stockalone = "no"? <bar/'); 사설 토토concat -------------------------------------- <? xml 버전 = "1.1"? <foo/ <bar/
사설 토토element
(이름이름[, 사설 토토attributes (value[asattname] [, ... ])] [, 내용, ...])
the사설 토토element
expression은 주어진 이름, 속성 및 내용으로 사설 토토 요소를 생성합니다.
예 :
선택 사설 토토ELEMENT (FOON FOO); 사설 토토element ------------ <foo/ 사설 토토element (이름 foo, 사설 토토attributes ( 'xyz'as bar))를 선택하십시오. 사설 토토element ----------------- <foo bar = "xyz"/ 사설 토토element (이름 foo, 사설 토토attributes (current_date as bar), 'cont', 'ent')를 선택하십시오. 사설 토토element ------------------------------------------------ <foo bar = "2007-01-26" content </foo
유효하지 않은 요소 및 속성 이름 사설 토토 이름을 시퀀스로 대체하여_XHHHH_, 여기서HHHH| 예를 들어:
사설 토토ELEMENT (이름 "foo $ bar", 사설 토토ATTRIBUTES ( 'XYZ'로 "a & b")); 사설 토토element ------------------------------------ <foo_x0024_bar a_x0026_b = "xyz"/
속성 값이 열 참조 인 경우 명시 적 속성 이름을 지정할 필요가 없습니다.이 경우 열 이름은 기본적으로 속성 이름으로 사용됩니다. 다른 경우에는 속성에 명시적인 이름이 부여되어야합니다. 그래서이 예는 유효합니다 :
테이블 테스트 생성 (사설 토토, B 사설 토토); 테스트에서 XmlElement (이름 테스트, Xmlattributes (a, b))를 선택하십시오.
그러나 이것들은 다음과 같습니다.
테스트에서 사설 토토EMENT (이름 테스트, 사설 토토ATTRIBUTES ( 'Constant'), A, B)를 선택합니다. XmlElement (이름 테스트, Xmlattributes (func (a, b)))를 테스트에서 선택하십시오;
요소 컨텐츠는 지정된 경우 데이터 유형에 따라 형식화됩니다. 내용 자체가 유형 인 경우사설 토토, 복잡한 사설 토토 문서를 구성 할 수 있습니다. 예를 들어:
사설 토토ELEMENT (이름 foo, 사설 토토ATTRIBUTES ( 'XYZ'AS BAR)), 사설 토토element (이름 ABC), 사설 토토comment ( '테스트'), 사설 토토element (name xyz)); 사설 토토element ----------------------------------------------------- <foo bar = "xyz" <abc/ <!-테스트- <xyz/</foo
다른 유형의 내용은 유효한 사설 토토 문자 데이터로 형식화됩니다. 이것은 특히 문자 <,, & & & & & we가 엔티티로 변환 될 것임을 의미합니다. 이진 데이터 (데이터 유형BYTEA) 구성 매개 변수 설정에 따라 Base64 또는 Hex 인코딩에 표시됩니다.사설 토토binary. SQL 및 PostgreSQL 데이터 유형을 사설 토토 스키마 사양과 정렬하기 위해 개별 데이터 유형의 특정 동작이 발전해야합니다.이 시점에서보다 정확한 설명이 나타납니다..
사설 토토forest
(컨텐츠[as이름] [, ...])
the사설 토토forest
expression은 주어진 이름과 내용을 사용하여 요소의 사설 토토 숲 (시퀀스)을 생성합니다.
예 :
사설 토토FOREST ( 'ABC', foo, 123)를 선택합니다. 사설 토토forest --------------------------------- <foo abc </foo <bar 123 </bar 사설 토토FOREST (table_name, column_name)를 선택하십시오. information_schema.columns에서 여기서 table_schema = 'pg_catalog'; 사설 토토forest -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------. <table_name pg_authid </table_name <culns_name rolname </column_name <table_name pg_authid </table_name <culns_name rolsuper </column_name ...
두 번째 예에서 볼 수 있듯이 컨텐츠 값이 열 참조 인 경우 요소 이름을 생략 할 수 있으며,이 경우 열 이름은 기본적으로 사용됩니다. 그렇지 않으면 이름을 지정해야합니다.
유효하지 않은 요소 이름 사설 토토 이름이 표시된대로사설 토토element
위. 마찬가지로, 컨텐츠 데이터가 유효한 사설 토토 컨텐츠를 만들기 위해 피해서 이미 유형이 아닌 한사설 토토.
사설 토토 포레스트가 유효하지 않다는 점에 유의하십시오. 하나 이상의 요소로 구성되면 사설 토토 문서가 있으므로 랩 래프에 유용 할 수 있습니다사설 토토forest
표현사설 토토element
.
사설 토토pi
(이름대상[, 컨텐츠])
the사설 토토pi
expression은 사설 토토 처리 명령을 만듭니다. 존재하는 경우 내용은 문자 순서를 포함해서는 안됩니다?.
예 :
선택 사설 토토PI (이름 php, 'echo "hello world";'); 사설 토토PI --------------------------------- <? php echo "Hello World";?
사설 토토root
(사설 토토, 버전텍스트| 가치 없음 [, 독립형 예 | 아니오 | 가치])
the사설 토토root
표현식은 사설 토토 값의 루트 노드의 특성을 변경합니다. 버전이 지정되면 루트 노드의 버전 선언의 값을 대체합니다. 독립형 설정이 지정되면 루트 노드의 독립형 선언의 값을 대체합니다.
사설 토토ROOT (사설 토토PARSE (Document '<? 사설 토토 버전 = "1.1"? <content abc </content'), 버전 '1.0', 독립형 예); 사설 토토root ------------------------------------------ <? xml 버전 = "1.0"standalone = "yes"? <content ABC </content
사설 토토agg
(사설 토토)
함수사설 토토agg
는 여기에 설명 된 다른 기능과 달리 집계 기능입니다. 입력 값을 집계 함수 호출에 연결합니다.사설 토토CONCAT
단일 행의 표현이 아닌 행에 걸쳐 발생한다는 점을 제외하고. 보다PostgreSQL : 문서 : 9.6 : 와이즈 토토 함수집계 함수에 대한 추가 정보.
예 :
테이블 테스트 생성 (y int, x xml); 테스트 값에 삽입 (1, '<foo abc </foo'); 테스트 값에 삽입 (2, '<bar/'); 테스트에서 사설 토토agg (x)를 선택하십시오. 사설 토토agg ------------------------ <foo abc </foo <bar/
연결 순서를 결정하려면주문 by조항은 다음에 설명 된대로 집계 통화에 추가 될 수 있습니다섹션 4.2.7. 예를 들어:
테스트에서 사설 토토agg (x order by y desc)를 선택합니다. 사설 토토agg ------------------------ <bar/ <foo abc </foo
이전 버전에서는 다음과 같은 비표준 접근 방식이 권장되었으며 특정 경우에도 여전히 유용 할 수 있습니다.
사설 토토agg (x)를 선택하십시오 (Y desc의 테스트 순서에서 선택 *) 탭; 사설 토토agg ------------------------ <bar/ <foo abc </foo
이 섹션에 설명 된 표현식의 특성을 확인하십시오.사설 토토값.
사설 토토is document
표현is document인수 사설 토토 값이 적절한 사설 토토 문서 인 경우 true를 반환합니다. 보다PostgreSQL : 문서 : 9.6 : 토토 캔 유형문서와 콘텐츠 조각의 차이에 대한 정보.
사설 토토exists
(텍스트통과 [by ref]사설 토토[by ref])
함수사설 토토exists
첫 번째 인수의 xpath 표현식이 노드를 반환하고 그렇지 않으면 false가 반환하면 true를 반환합니다. (두 인수 중 하나 인 경우 결과는 Null입니다.)
예 :
사설 토토exists 선택 ( '// town [) =' '토론토' '] 사설 토토exists ------------ 티 (1 행)
theby ref조항은 PostgreSQL에 영향을 미치지 않지만 SQL 적합성 및 다른 구현과의 호환성에 허용됩니다. SQL 표준 당, 첫 번째by ref두 번째는 선택 사항입니다. 또한 SQL 표준은를 지정합니다.사설 토토exists
XQuery 표현식을 첫 번째 인수로 작성하도록 구성하지만 PostgreSQL은 현재 XPATP 만 지원합니다. 이는 XQuery의 하위 집합입니다..
사설 토토_is_well_formed
(텍스트)사설 토토_is_well_formed_document
(텍스트)사설 토토_is_well_formed_content
(텍스트)
이 기능은 a를 확인합니다.텍스트String은 잘 형성된 사설 토토이며 부울 결과를 반환합니다.사설 토토_is_well_formed_document
잘 형성된 문서를 확인하는 동안사설 토토_is_well_formed_content
잘 형성된 콘텐츠를 확인하십시오.사설 토토_is_well_formed
사설 토토option구성 매개 변수가 설정되었습니다문서또는 후자가 설정된 경우컨텐츠. 이것은사설 토토_is_well_formed
간단한 캐스트가 입력 할 것인지 확인하는 데 유용합니다사설 토토성공은 성공하지만 다른 두 기능은 해당 변형이를 보는 데 유용합니다.사설 토토PARSE
성공할 것입니다.
예 :
Xmloption을 문서화하도록 설정; 사설 토토_is_well_formed ( '<')를 선택하십시오. 사설 토토_is_well_formed ------------------- 에프 (1 줄) 선택 사설 토토_is_well_formed ( '<abc/'); 사설 토토_is_well_formed ------------------- 티 (1 줄) 사설 토토option을 컨텐츠로 설정하십시오. 선택 사설 토토_is_well_formed ( 'ABC'); 사설 토토_is_well_formed ------------------- 티 (1 줄) 사설 토토_is_well_formed_document를 선택하십시오 ( '<pg : foo xmlns : pg = "http://postgresql.org/stuff" bar </pg : foo'); 사설 토토_is_well_formed_document --------------------------------- 티 (1 줄) 사설 토토_is_well_formed_document를 선택하십시오 ( '<pg : foo xmlns : pg = "http://postgresql.org/stuff" bar </my : foo'); 사설 토토_is_well_formed_document --------------------------------- 에프 (1 행)
마지막 예제는 검사에 네임 스페이스가 올바르게 일치하는지 여부가 포함되어 있음을 보여줍니다.
데이터 유형의 처리 값사설 토토, PostgreSQL은 함수를 제공합니다xpath
andxpath_exists
26210_26251
xpath
(xpath, 사설 토토[, NSARRAY])
함수xpath
XPath 표현식 평가xpath(a텍스트값) 사설 토토 값에 대한사설 토토. XPath 표현식에 의해 생성 된 노드 세트에 해당하는 사설 토토 값의 배열을 반환합니다. XPath 표현식이 노드 세트 대신 스칼라 값을 반환하면 단일 요소 어레이가 반환됩니다.
두 번째 인수는 잘 형성된 사설 토토 문서 여야합니다. 특히 단일 루트 노드 요소가 있어야합니다.
함수의 선택적 세 번째 인수는 네임 스페이스 매핑 배열입니다. 이 배열은 2 차원이어야합니다텍스트두 번째 축의 길이가 2와 같다는 배열 (즉, 배열 배열이어야하며 각 배열이어야합니다. 각각은 정확히 2 개의 요소로 구성됨). 각 배열 항목의 첫 번째 요소는 네임 스페이스 이름 (별칭)이고 두 번째는 네임 스페이스 URI입니다. 이 배열에 제공된 별칭은 사설 토토 문서 자체 (즉, 사설 토토 문서와에서 사용되는 별칭과 동일 할 필요는 없습니다.xpath
함수 컨텍스트, 별칭은Local).
예 :
xpath ( '/my : a/text ()', '<my : a xmlns : my = "http://example.com" test </my : a', 배열 [배열 [ 'my', 'http://example.com']); xpath -------- 시험
기본 (익명) 네임 스페이스를 처리하려면 다음과 같은 작업을 수행하십시오.
xpath ( '// mydefns : b/text ()', '<a xmlns = "http://example.com" <b test </b </a', 배열 [배열 [ 'mydefns', 'http://example.com']); xpath -------- 시험
xpath_exists
(xpath, 사설 토토[, NSARRAY])
함수xpath_exists
전문화 된 형태의xpath
함수. XPath를 만족시키는 개별 사설 토토 값을 반환하는 대신,이 함수는 쿼리가 만족되었는지 여부를 나타내는 부울을 반환합니다. 이 기능은 표준과 동일합니다사설 토토exists네임 스페이스 매핑 인수에 대한 지원을 제공한다는 점을 제외하고는 술어 |
예 :
xpath_exists를 선택하십시오 ( '/my : a/text ()', '<my : a xmlns : my = "http://example.com" test </my : a', 배열 [배열 [ 'my', 'http://example.com']); xpath_exists -------------- 티 (1 행)
다음 함수는 관계형 테이블의 내용을 사설 토토 값에 매핑합니다. 사설 토토 내보내기 기능으로 생각할 수 있습니다 :
TABLE_TO_사설 토토 (TBL Regclass, Nulls Boolean, Tableforest Boolean, Targetns Text) query_to_사설 토토 (쿼리 텍스트, Nulls 부울, Tableforest Boolean, Targetns Text) cursor_to_사설 토토 (cursor refcursor, count int, nulls boolean, TableForest Boolean, Targetns Text)
각 함수의 반환 유형은입니다.사설 토토.
table_to_사설 토토
지명 된 테이블의 내용을 매개 변수로 전달TBL. 그만큼RegClass유형은 선택적 스키마 자격 및 이중 인용문을 포함하여 일반적인 표기법을 사용하여 테이블을 식별하는 문자열을 수락합니다..query_to_사설 토토
텍스트가 매개 변수로 전달되는 쿼리를 실행합니다쿼리그리고 결과 세트를 맵핑합니다.cursor_to_사설 토토
매개 변수로 지정된 커서에서 표시된 행 수를 가져옵니다커서. 이 변형은 큰 테이블을 매핑 해야하는 경우 권장됩니다. 결과 값은 각 함수에 의해 메모리에 구축되기 때문입니다.
ifTableForest가 false이고 결과 사설 토토 문서는 다음과 같습니다.
<tableName <줄 <councleName1 data </columnname1 <councleName2 data </columnname2 </row <줄 ... </row ... </tableName
ifTableForest사실입니다. 결과는 다음과 같이 보이는 사설 토토 컨텐츠 조각입니다.
<tableName <councleName1 data </columnname1 <councleName2 data </columnname2 </tableName <tableName ... </tableName ...
테이블 이름이 없으면 쿼리 또는 커서를 매핑 할 때 문자열테이블첫 번째 형식으로 사용됩니다.Row두 번째 형식의.
이 형식들 사이의 선택은 사용자에게 달려 있습니다. 첫 번째 형식은 적절한 사설 토토 문서로 많은 응용 프로그램에서 중요합니다. 두 번째 형식은에서 더 유용한 경향이 있습니다.cursor_to_사설 토토
결과 결과 값이 나중에 하나의 문서로 재 조립되는 경우 기능. 위에서 논의 된 사설 토토 컨텐츠 생성 기능, 특히사설 토토element
, 결과를 맛으로 바꿀 수 있습니다.
데이터 값은 함수에 대해 설명한 것과 동일한 방식으로 매핑됩니다사설 토토element
위.
매개 변수nulls출력에 널 값이 포함되어야하는지 여부를 결정합니다. true 인 경우 열의 널 값은 다음과 같이 표시됩니다.
<ColumnName XSI : nil = "true"/
어디XSI사설 토토 스키마 인스턴스 용 사설 토토 네임 스페이스 접두사입니다. 적절한 네임 스페이스 선언이 결과 값에 추가됩니다. False 인 경우 NULL 값을 포함하는 열은 출력에서 단순히 생략됩니다.
매개 변수targetns결과의 원하는 사설 토토 네임 스페이스를 지정합니다. 특정 네임 스페이스가 원하지 않으면 빈 문자열을 전달해야합니다.
다음 함수는 위의 해당 함수에 의해 수행되는 매핑을 설명하는 사설 토토 스키마 문서를 반환합니다.
TABLE_TO_사설 토토SCHEMA (TBL Regclass, Nulls Boolean, TableForest Boolean, Targetns 텍스트) query_to_사설 토토schema (쿼리 텍스트, Nulls Boolean, Tableforest Boolean, Targetns 텍스트) cursor_to_사설 토토schema (Cursor Refcursor, Nulls Boolean, Tableforest Boolean, Targetns Text)
일치하는 사설 토토 데이터 매핑 및 사설 토토 스키마 문서를 얻기 위해 동일한 매개 변수를 전달하는 것이 중요합니다..
다음 함수는 사설 토토 데이터 매핑과 해당 사설 토토 스키마를 하나의 문서 (또는 Forest)에서 생성합니다. 독립적이고 자기 설명 결과가 원하는 곳에서 유용 할 수 있습니다.
table_to_사설 토토_and_xmlschema (TBL Regclass, Nulls Boolean, Tableforest Boolean, Targetns 텍스트) query_to_사설 토토_and_xmlschema (쿼리 텍스트, nulls boolean, 탁자 부울, targetns text)
또한 전체 스키마 또는 전체 현재 데이터베이스의 유사한 매핑을 생성하기 위해 다음 기능을 사용할 수 있습니다.
schema_to_xml (스키마 이름, nulls boolean, 탁자 부울, targetns 텍스트) schema_to_xmlschema (스키마 이름, nulls boolean, 탁자 부울, targetns 텍스트) schema_to_xml_and_xmlschema (스키마 이름, nulls boolean, 탁자 부울, Targetns 텍스트) database_to_xml (nulls boolean, 탁자 부울, Targetns 텍스트) database_to_xmlschema (nulls boolean, 탁자 부울, Targetns 텍스트) database_to_xml_and_xmlschema (nulls boolean, 탁자 부울, targetns 텍스트)
이들은 잠재적으로 많은 데이터를 생성하며 메모리에 구축해야합니다. 대형 스키마 또는 데이터베이스의 컨텐츠 매핑을 요청할 때, 커서를 통해서도 테이블을 개별적으로 매핑하는 것이 좋습니다..
스키마 컨텐츠 매핑의 결과는 다음과 같습니다.
<schemaname 표 1 매핑 표 2 매핑 ... </schemaname
테이블 매핑 형식이에 따라 다릅니다.TableForest위에서 설명한대로 매개 변수.
데이터베이스 컨텐츠 매핑의 결과는 다음과 같습니다.
<dbname <schema1name ... </schema1name <Schema2Name ... </schema2name ... </dbname
스키마 매핑이 위와 같은 곳.
이러한 함수에 의해 생성 된 출력을 사용하는 예예 9-1XSLT 스타일 시트를 보여줍니다.table_to_사설 토토_and_xmlschema
테이블 데이터의 테이블 컬링을 포함하는 HTML 문서. 비슷한 방식으로 이러한 기능의 결과는 다른 사설 토토 기반 형식으로 변환 될 수 있습니다.
예 9-1. SQL/사설 토토 출력을 HTML로 변환하기위한 XSLT 스타일 시트
<? xml 버전 = "1.0"? <xsl : 스타일 버전 = "1.0" xmlns : xsl = "http://www.w3.org/1999/xsl/transform" xmlns : xsd = "http://www.w3.org/2001/xmlschema" xmlns = "http://www.w3.org/1999/xhtml" <xsl : 출력 메소드 = "xml" doctype-system = "http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd" doctype-public = "-// w3c/dtd xhtml 1.0 엄격한 // en" 인트 = "예"/ <xsl : 템플릿 매치 = "/*" <xsl : variable name = "schema"select = "// xsd : schema"/ <xsl : 변수 이름 = "tabletypename" select = "$ schema/xsd : element [@name = name (current ())]/@type"/ <xsl : 변수 이름 = "rowtypename" select = "$ schema/xsd : complextype [@name = $ tabletypeName]/xsd : 시퀀스/xsd : 요소 [@name = 'row']/@type"/ <html <헤드 <title <xsl : select value-of select = "name (current ())"/ </title </head <body <테이블 <tr <xsl : for-each select = "$ schema/xsd : complextype [@name = $ rowtypename]/xsd : sequence/xsd : element/@name" <th <xsl : select value-of select = "."/ </th </xsl : for-each </tr <xsl : for-each select = "row" <tr <xsl : for-each select = "*" <td <xsl : select value-of select = "."/ </td </xsl : for-each </tr </xsl : for-each </테이블 </body </html </xsl : 템플릿 </xsl : 스타일 시트