여기에 설명된 함수 및 함수와 유사한 표현식
섹션은 유형의 값에 대해 작동합니다.롤 토토. 확인섹션 8.13정보는 다음과 같습니다.롤 토토유형. 함수형 표현식롤 토토parse그리고롤 토토직렬화유형 간 변환용롤 토토여기서는 반복되지 않습니다. 대부분의 사용
이러한 기능을 사용하려면 설치가 빌드되어야 합니다.구성 --with-lib롤 토토.
함수 세트 및 함수와 유사한 표현식을 사용할 수 있습니다 SQL 데이터에서 XML 컨텐츠를 생성하기 위한 것입니다. 따라서 그들은 쿼리 결과를 XML로 형식화하는 데 특히 적합합니다. 클라이언트 애플리케이션에서 처리하기 위한 문서입니다.
롤 토토comment(텍스트)
함수롤 토토comment생성
지정된 텍스트가 포함된 XML 주석이 포함된 XML 값
내용. 텍스트에는 다음이 포함될 수 없습니다."--"또는 a로 끝남"-"그래서 결과는
구문은 유효한 롤 토토 주석입니다. 인수가 null인 경우
결과는 null입니다.
예:
SELECT 롤 토토comment('안녕하세요');
롤 토토주석
--------------
<!--안녕하세요--롤 토토concat(롤 토토[, ...])
함수롤 토토concat개별 롤 토토 값 목록을 연결하여 단일 롤 토토 값을 생성합니다.
롤 토토 콘텐츠 조각이 포함된 값입니다. Null 값은 생략됩니다.
null이 아닌 인수가 없는 경우에만 결과는 null입니다.
예:
SELECT 롤 토토concat('<abc/', '<barfoo</bar');
롤 토토concat
---------
<abc/<barfoo</bar
XML 선언이 있는 경우 다음과 같이 결합됩니다. 만약 모두 인수 값에는 동일한 XML 버전 선언이 있습니다. 결과에 사용되며, 그렇지 않으면 버전이 사용되지 않습니다. 모두 인수인 경우 값에는 독립형 선언 값이 있습니다."그렇습니다"이면 해당 값이 결과에 사용됩니다. 만약 모두 인수 값에는 독립형 선언 값이 있고 최소한 하나는"아니요", 그러면 이는 다음에서 사용됩니다. 결과. 그렇지 않으면 결과에 독립형 선언이 없습니다. 만약 결과는 독립형 선언이 필요한 것으로 결정되었지만 버전 선언, 버전 1.0의 버전 선언은 다음과 같습니다. XML에는 버전을 포함하기 위해 XML 선언이 필요하기 때문에 사용됩니다. 선언. 인코딩 선언은 모두 무시되고 제거됩니다. 경우.
예:
SELECT 롤 토토concat('<?롤 토토 version="1.1"?<foo/', '<?롤 토토 version="1.1"standalone="no"?<bar/');
롤 토토concat
----------------------
<?롤 토토 version="1.1"?<foo/<bar/롤 토토요소(이름이름 [, 롤 토토속성(값 [ASattname] [, ... ])] [, 콘텐츠, ...])
그롤 토토요소표현식 생성
주어진 이름, 속성 및 콘텐츠를 가진 XML 요소입니다.
예:
SELECT 롤 토토element(이름 foo);
롤 토토요소
------------
<푸/
SELECT 롤 토토element(이름 foo, 롤 토토attributes('xyz' 막대형));
롤 토토요소
------------------
<foo bar="xyz"/
SELECT 롤 토토element(이름 foo, 롤 토토attributes(현재_날짜를 막대로), 'cont', 'ent');
롤 토토요소
------------------------
<foo bar="2007-01-26"콘텐츠</foo
유효한 XML 이름이 아닌 요소 및 속성 이름은 문제가 되는 문자를 시퀀스로 대체하여 이스케이프되었습니다._x흐흐흐흐_, 어디서흐흐흐흐캐릭터의 것입니다 16진수 표기법의 유니코드 코드 포인트입니다. 예를 들어:
SELECT 롤 토토element(이름 "foo$bar", 롤 토토attributes('xyz' as "a&b"));
롤 토토요소
----------------------------------
<foo_x0024_bar a_x0026_b="xyz"/
다음의 경우 명시적인 속성 이름을 지정할 필요가 없습니다. 속성 값은 열 참조입니다. 이 경우 열의 name은 기본적으로 속성 이름으로 사용됩니다. 다른 경우에는 속성에는 명시적인 이름이 지정되어야 합니다. 그래서 이 예는 유효함:
CREATE TABLE 테스트(a 롤 토토, b 롤 토토); SELECT 롤 토토element(name test, 롤 토토attributes(a, b)) FROM test;
그러나 이것은 그렇지 않습니다:
SELECT 롤 토토element(name test, 롤 토토attributes('constant'), a, b) FROM test;
SELECT 롤 토토element(name test, 롤 토토attributes(func(a, b))) FROM test;
지정된 경우 요소 내용은 다음에 따라 형식이 지정됩니다. 데이터 유형입니다. 콘텐츠 자체가 유형인 경우롤 토토, 복잡한 XML 문서를 구성할 수 있습니다. 에 대한 예:
SELECT 롤 토토element(이름 foo, 롤 토토attributes('xyz' 막대형),
롤 토토element(이름 abc),
롤 토토comment('테스트'),
롤 토토element(이름 xyz));
롤 토토요소
---------------------------------
<foo bar="xyz"<abc/<!--test--<xyz/</foo
다른 유형의 콘텐츠는 유효한 롤 토토로 형식화됩니다 문자 데이터. 이는 특히 문자 <, 및 &는 엔터티로 변환됩니다. 바이너리 데이터(데이터 유형바이테아)는 base64로 표현되거나 구성 설정에 따라 16진수 인코딩 매개변수롤 토토binary. 는 개별 데이터 유형에 대한 특정 동작이 발전할 것으로 예상됩니다. SQL 및 PostgreSQL 데이터 유형을 롤 토토에 맞추기 위해 보다 정확한 설명이 필요한 스키마 사양 나타날 것입니다.
롤 토토forest(콘텐츠 [AS이름] [, ...])
그롤 토토forest표현식은 다음을 생성합니다.
주어진 이름을 사용하는 요소의 XML 포리스트(시퀀스)
내용.
예:
SELECT 롤 토토forest('abc' AS foo, 123 AS bar);
롤 토토forest
-----------------
<fooabc</foo<bar123</bar
SELECT 롤 토토forest(테이블_이름, 열_이름)
정보_스키마.열에서
WHERE table_schema = 'pg_catalog';
롤 토토forest
-----------------------------------------------------------------
<table_namepg_authid</table_name<column_name롤 이름</column_name
<table_namepg_authid</table_name<column_namerolsuper</column_name
...
두 번째 예에서 볼 수 있듯이 요소 이름은 생략 가능합니다. 콘텐츠 값이 열 참조인 경우 열 이름은 기본적으로 사용됩니다. 그렇지 않은 경우 이름은 다음과 같아야 합니다. 지정되었습니다.
유효한 XML 이름이 아닌 요소 이름은 표시된 것처럼 이스케이프됩니다.
에 대한롤 토토요소위. 마찬가지로,
콘텐츠 데이터는 유효한 XML 콘텐츠를 만들기 위해 이스케이프됩니다.
이미 유형입니다롤 토토.
XML 포리스트는 다음과 같은 경우 유효한 XML 문서가 아닙니다.
둘 이상의 요소로 구성되므로 래핑하는 것이 유용할 수 있습니다.롤 토토forest표현식롤 토토요소.
롤 토토pi(이름대상 [, 내용])
그롤 토토pi표현식은 다음을 생성합니다.
XML 처리 명령. 콘텐츠가 있는 경우
문자 순서를 포함합니다?.
예:
SELECT 롤 토토pi(php 이름, 'echo "hello world";');
롤 토토pi
----------------
<?php echo "hello world";?롤 토토root(롤 토토, 버전텍스트| 값 없음 [, 독립형 yes|no|값 없음])
그롤 토토root표현식은 다음을 변경합니다.
XML 값의 루트 노드 속성입니다. 버전이 다음과 같은 경우
지정된 경우 루트 노드 버전의 값을 대체합니다.
선언; 독립 실행형 설정이 지정된 경우
루트 노드의 독립형 선언에 있는 값입니다.
SELECT 롤 토토root(롤 토토parse(문서 '<?롤 토토 version="1.1"?<contentabc</content')),
버전 '1.0', 독립형 예);
롤 토토root
---------------------------
<?롤 토토 version="1.0" 독립형="예"?
<contentabc</content롤 토토agg(롤 토토)
함수롤 토토agg이것은
여기에 설명된 다른 함수는 집계 함수입니다. 그것
입력 값을 집계 함수 호출에 연결합니다.
좋아요롤 토토concat그렇습니다. 단, 그 외에는
연결은 표현식 전체가 아닌 행 전체에서 발생합니다.
단일 행. 참조PostgreSQL : 문서 : 9.3 : 토토 커뮤니티 함수집계 함수에 대한 추가 정보를 확인하세요.
예:
CREATE TABLE 테스트(y int, x 롤 토토);
테스트 값에 삽입(1, '<fooabc</foo');
테스트 값에 삽입(2, '<bar/');
SELECT 롤 토토agg(x) FROM 테스트;
롤 토토agg
---------
<fooabc</foo<bar/
연결 순서를 결정하려면,주문 기준절이 집계 호출에 추가될 수 있습니다. 설명된 대로섹션 4.2.7. 에 대한 예:
SELECT 롤 토토agg(x ORDER BY y DESC) FROM 테스트;
롤 토토agg
---------
<bar/<fooabc</foo
다음과 같은 비표준 접근 방식이 권장되었습니다. 이전 버전이며 특정 경우에는 여전히 유용할 수 있습니다.
SELECT 롤 토토agg(x) FROM (SELECT * FROM test ORDER BY y DESC) AS 탭;
롤 토토agg
---------
<bar/<fooabc</foo이 섹션에 설명된 표현식은 다음 속성을 확인합니다.롤 토토값.
롤 토토IS 문서
표현식IS 문서참을 반환합니다 인수 XML 값이 적절한 XML 문서이면 false입니다. not(즉, 콘텐츠 조각)이거나 인수가 다음인 경우 null입니다. 널. 참조섹션 8.13정보 문서와 콘텐츠 조각의 차이점.
롤 토토문서가 아님
표현식문서가 아님반환 인수 XML 값이 적절한 XML 문서이면 false이고, 다음이면 true입니다. 그렇지 않은 경우(즉, 콘텐츠 조각) 또는 null인 경우 인수가 null입니다.
롤 토토EXISTS(텍스트통과 중 [참조 기준] 롤 토토 [참조 기준])
함수롤 토토exists반환
첫 번째 인수의 XPath 표현식이 임의의 값을 반환하면 true입니다.
노드, 그렇지 않으면 거짓입니다. (두 인수 중 하나라도 null이면 결과는
null입니다.)
예:
SELECT 롤 토토exists('//town[text() = ''토론토'']' PASSING BY REF '<towns<town토론토</town<town오타와</town</towns');
XML이 존재한다
------------
티
(1행)
그참조 기준절은 다음 항목에 적용되지 않습니다.
PostgreSQL은 SQL 적합성과 호환성을 위해 허용됩니다.
다른 구현과 함께. SQL 표준에 따라 첫 번째참조 기준필수이고 두 번째는 선택사항입니다. 또한
SQL 표준은 다음을 지정합니다.롤 토토existsXQuery 표현식을 취하는 구성
첫 번째 인수로 사용되지만 PostgreSQL은 현재 XPath만 지원합니다.
이는 XQuery의 하위 집합입니다.
롤 토토_is_well_formed(텍스트)롤 토토_is_well_formed_document(텍스트)롤 토토_is_well_formed_content(텍스트)
이 함수는 다음을 확인합니다.텍스트string은 부울 결과를 반환하는 올바른 형식의 롤 토토입니다.롤 토토_is_well_formed_document다음을 확인합니다.
잘 구성된 문서인 반면롤 토토_is_well_formed_content잘 구성된지 확인합니다.
내용.롤 토토_is_well_formed그렇습니다
만약 전자라면롤 토토option구성 매개변수가 다음으로 설정되었습니다.문서, 또는 후자로 설정된 경우콘텐츠. 이는 다음을 의미합니다.롤 토토_is_well_formed다음 여부를 확인하는 데 유용합니다.
유형에 대한 간단한 캐스트롤 토토성공할 것입니다. 반면
다른 두 함수는 다음을 확인하는 데 유용합니다.
해당 변형롤 토토PARSE성공할 것입니다.
예:
XML 옵션을 문서로 설정;
SELECT 롤 토토_is_well_formed('<');
롤 토토_is_well_formed
-------
에프
(1줄)
SELECT 롤 토토_is_well_formed('<abc/');
롤 토토_is_well_formed
-------
티
(1줄)
롤 토토option을 콘텐츠로 설정;
SELECT 롤 토토_is_well_formed('abc');
롤 토토_is_well_formed
-------
티
(1줄)
SELECT 롤 토토_is_well_formed_document('<pg:foo 롤 토토ns:pg="http://postgresql.org/stuff"bar</pg:foo');
롤 토토_is_well_formed_document
----------------
티
(1줄)
SELECT 롤 토토_is_well_formed_document('<pg:foo 롤 토토ns:pg="http://postgresql.org/stuff"bar</my:foo');
롤 토토_is_well_formed_document
----------------
에프
(1행)
마지막 예는 검사에 다음이 포함되어 있음을 보여줍니다. 네임스페이스가 올바르게 일치합니다.
데이터 유형의 값을 처리하려면롤 토토,
PostgreSQL은 다음 기능을 제공합니다.xpath그리고xpath_exists26316_26357
xpath(xpath, 롤 토토 [, nsarray])
함수xpath평가합니다
XPath 표현식xpath(a텍스트값)을 롤 토토 값에 대해롤 토토. XML 값의 배열을 반환합니다.
XPath 표현식에 의해 생성된 노드 세트에 해당합니다. 만약에
XPath 표현식은 노드 세트가 아닌 스칼라 값을 반환합니다.
단일 요소 배열이 반환됩니다.
두 번째 인수는 올바른 형식의 XML 문서여야 합니다. 에서 특히 단일 루트 노드 요소가 있어야 합니다.
함수의 선택적 세 번째 인수는 다음의 배열입니다.
네임스페이스 매핑. 이 배열은 2차원 배열이어야 합니다.텍스트두 번째 축의 길이를 갖는 배열
2와 같다(즉, 배열의 배열이어야 하며, 각각은
이는 정확히 2개의 요소로 구성됩니다). 각 요소의 첫 번째 요소
배열 항목은 네임스페이스 이름(별칭)이고 두 번째 항목은 네임스페이스입니다.
URI. 이 배열에 제공된 별칭이 필수는 아닙니다.
XML 문서 자체에서 사용되는 것과 동일합니다(다른 문서에서는
XML 문서와 모두에 있는 단어xpath함수 컨텍스트, 별칭은현지).
예:
SELECT xpath('/my:a/text()', '<my:a 롤 토토ns:my="http://example.com"테스트</my:a',
ARRAY[ARRAY['my', 'http://example.com']]);
xpath
--------
테스트
기본(익명) 네임스페이스를 처리하려면 다음과 같이 하십시오. 이:
SELECT xpath('//mydefns:b/text()', '<a 롤 토토ns="http://example.com"<b테스트</b</a',
ARRAY[ARRAY['mydefns', 'http://example.com']]);
xpath
--------
테스트
xpath_exists(xpath, 롤 토토 [, nsarray])
함수xpath_exists은
의 특수화된 형태xpath함수. 개별 XML 값을 반환하는 대신
XPath를 충족하면 이 함수는 다음을 나타내는 부울을 반환합니다.
쿼리가 만족되었는지 여부. 이 기능은 동일합니다.
표준에 맞춰롤 토토EXISTS술어,
네임스페이스 매핑에 대한 지원도 제공한다는 점만 제외
논쟁.
예:
SELECT xpath_exists('/my:a/text()', '<my:a 롤 토토ns:my="http://example.com"테스트</my:a',
ARRAY[ARRAY['my', 'http://example.com']]);
xpath_exists
--------------
티
(1행)다음 함수는 관계형 테이블의 내용을 다음으로 매핑합니다. XML 값. XML 내보내기 기능으로 생각할 수 있습니다.
table_to_롤 토토(tbl regclass, nulls boolean, tableforest boolean, targetns text)
query_to_롤 토토(쿼리 텍스트, nulls 부울, tableforest 부울, targetns 텍스트)
cursor_to_롤 토토(cursor refcursor, count int, nulls boolean,
tableforest 부울, 대상 텍스트)
각 함수의 반환 유형은 다음과 같습니다롤 토토.
table_to_롤 토토다음의 내용을 매핑합니다.
매개변수로 전달된 명명된 테이블tbl.regclass유형
일반적인 표기법을 사용하여 테이블을 식별하는 문자열을 허용합니다.
선택적 스키마 한정 및 큰따옴표를 포함합니다.query_to_롤 토토다음 쿼리를 실행합니다.
텍스트가 매개변수로 전달됩니다.질의그리고
결과 세트를 매핑합니다.cursor_to_롤 토토다음으로 지정된 커서에서 표시된 행 수를 가져옵니다.
매개변수커서. 이 변종은
큰 테이블을 매핑해야 하는 경우 권장됩니다.
값은 각 기능에 의해 메모리에 축적됩니다.
만약테이블포레스트거짓이면 결과 XML 문서는 다음과 같습니다.
<테이블 이름
<행
<columnname1데이터</columnname1
<columnname2데이터</columnname2
</row
<행
...
</row
...
</테이블 이름
만약테이블포레스트참입니다. 결과는 다음과 같습니다. 다음과 같은 XML 콘텐츠 조각:
<테이블 이름 <columnname1데이터</columnname1 <columnname2데이터</columnname2 </테이블 이름 <테이블 이름 ... </테이블 이름 ...
테이블 이름을 사용할 수 없는 경우, 즉 쿼리를 매핑할 때 또는 커서, 문자열테이블다음에서 사용됩니다. 첫 번째 형식,행두번째 형식.
이러한 형식 간의 선택은 사용자에게 달려 있습니다. 첫 번째
형식은 적절한 XML 문서이며 많은 경우에 중요합니다.
응용 프로그램. 두 번째 형식은 다음에서 더 유용한 경향이 있습니다.cursor_to_롤 토토결과인 경우 함수
값은 나중에 하나의 문서로 재조립됩니다. 는
위에서 설명한 XML 콘텐츠를 생성하는 함수, 특히롤 토토요소, 변경하는 데 사용할 수 있습니다.
결과는 맛볼 수 있습니다.
데이터 값은 다음에 대해 설명된 것과 동일한 방식으로 매핑됩니다.
기능롤 토토요소위.
매개변수널결정합니다 null 값이 출력에 포함되어야 하는지 여부입니다. true인 경우 null 열의 값은 다음과 같이 표시됩니다.
<columnname xsi:nil="true"/
어디에서xsi는 롤 토토 네임스페이스 접두사입니다. 롤 토토 스키마 인스턴스용. 적절한 네임스페이스 선언은 결과 값에 추가됩니다. false인 경우 null을 포함하는 열 값은 출력에서 단순히 생략됩니다.
매개변수대상다음을 지정합니다. 결과의 원하는 XML 네임스페이스. 특별한 네임스페이스가 없다면 원하는 경우 빈 문자열을 전달해야 합니다.
다음 함수는 다음을 설명하는 XML 스키마 문서를 반환합니다. 위의 해당 함수에 의해 수행된 매핑:
table_to_롤 토토schema(tbl regclass, nulls 부울, tableforest 부울, targetns 텍스트) query_to_롤 토토schema(쿼리 텍스트, nulls 부울, tableforest 부울, targetns 텍스트) cursor_to_롤 토토schema(cursor refcursor, nulls boolean, tableforest boolean, targetns text)
동일한 매개변수를 전달하는 것이 필수적입니다. 일치하는 XML 데이터 매핑과 XML 스키마 문서를 얻습니다.
다음 함수는 XML 데이터 매핑을 생성하고 하나의 문서(또는 포리스트)에 해당 XML 스키마가 연결되어 있음 함께. 독립적이고 독립적인 경우에 유용할 수 있습니다. 자체 설명적인 결과가 필요합니다.
table_to_롤 토토_and_롤 토토schema(tbl regclass, nulls 부울, tableforest 부울, targetns 텍스트) query_to_롤 토토_and_롤 토토schema(쿼리 텍스트, nulls 부울, tableforest 부울, targetns 텍스트)
또한 다음 기능을 생성할 수 있습니다. 전체 스키마 또는 전체 현재의 유사한 매핑 데이터베이스:
schema_to_롤 토토(스키마 이름, nulls 부울, tableforest 부울, targetns 텍스트) Schema_to_롤 토토schema(스키마 이름, nulls 부울, tableforest 부울, targetns 텍스트) Schema_to_롤 토토_and_롤 토토schema(스키마 이름, nulls 부울, tableforest 부울, targetns 텍스트) Database_to_롤 토토(nulls 부울, tableforest 부울, targetns 텍스트) Database_to_롤 토토schema(nulls 부울, tableforest 부울, targetns 텍스트) Database_to_롤 토토_and_롤 토토schema(nulls boolean, tableforest boolean, targetns text)
이것들은 잠재적으로 많은 양의 데이터를 생성한다는 점에 유의하십시오. 기억 속에 쌓이게 됩니다. 대용량 콘텐츠 매핑을 요청하는 경우 스키마 또는 데이터베이스의 경우 매핑을 고려하는 것이 좋습니다. 대신 커서를 통해서도 테이블을 별도로 사용할 수 있습니다.
스키마 콘텐츠 매핑의 결과는 다음과 같습니다:
<스키마 이름 table1-매핑 table2-매핑 ... </스키마이름
테이블 매핑 형식은 다음에 따라 다릅니다.테이블포레스트매개변수는 위에서 설명한 대로입니다.
데이터베이스 콘텐츠 매핑의 결과는 다음과 같습니다:
<데이터베이스 이름 <스키마1이름 ... </schema1name <스키마2이름 ... </schema2name ... </db이름
여기서 스키마 매핑은 위와 같습니다.
이러한 함수에 의해 생성된 출력을 사용하는 예로서,그림 9-1다음을 보여줍니다
출력을 변환하는 XSLT 스타일시트table_to_롤 토토_and_롤 토토schemaHTML 문서로
테이블 데이터의 표 형식 변환을 포함합니다. 유사한
방식으로 이러한 함수의 결과는 다음으로 변환될 수 있습니다.
기타 XML 기반 형식.
그림 9-1. SQL/XML 출력을 다음으로 변환하기 위한 XSLT 스타일시트 HTML
<?롤 토토 version="1.0"?
<xsl:스타일시트 버전="1.0"
롤 토토ns:xsl="http://www.w3.org/1999/XSL/Transform"
롤 토토ns:xsd="http://www.w3.org/2001/XMLSchema"
롤 토토ns="http://www.w3.org/1999/xhtml"
<xsl:출력 방법="롤 토토"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
doctype-public="-//W3C/DTD XHTML 1.0 엄격//EN"
들여쓰기="예"/
<xsl:템플릿 일치="/*"
<xsl:변수 이름="스키마" select="//xsd:스키마"/
<xsl:변수 이름="테이블 유형 이름"
select="$schema/xsd:요소[@name=name(current())]/@type"/
<xsl:변수 이름="행 유형 이름"
select="$schema/xsd:complexType[@name=$tabletypename]/xsd:sequence/xsd:element[@name='row']/@type"/
<html
<머리
<title<xsl:value-of select="name(current())"/</title
</head
<본문
<테이블
<tr
<xsl:for-each select="$schema/xsd:complexType[@name=$rowtypename]/xsd:sequence/xsd:element/@name"
<th<xsl:value-of select="."/</th
</xsl:for-each
</tr
<xsl:for-each select="행"
<tr
<xsl:for-each select="*"
<td<xsl:value-of select="."/</td
</xsl:for-each
</tr
</xsl:for-each
</table
</body
</html
</xsl:템플릿
</xsl:스타일시트| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 텍스트 검색 기능 및 운영자 | 위로 | JSON 함수 및 운영자 |