윈 토토 : 문서 : 9.4 : 윈 토토 9 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 토토 사이트 유형 | PostgreSQL : 문서 : 9.4 : 데이터 메이저 토토 사이트 | 8 장 데이터 유형 | PostgreSQL : 문서 : 9.4 : 무지개 토토 유형 |
the토토 캔데이터 유형을 사용하여 토토 캔 데이터를 저장할 수 있습니다. 토토 캔 데이터를 A 저장보다는 이점이 있습니다.텍스트필드는 성형에 대한 입력 값을 확인하고 유형-안전 작업을 수행하는 지원 함수가 있다는 것입니다. 보다PostgreSQL : 문서 : 9.4 : 롤 토토 기능. 이 데이터 유형을 사용하여 설치는와 함께 구축해야합니다.구성-with-lib토토 캔.
the토토 캔유형은 잘 형성 될 수 있습니다"문서", 토토 캔 표준에 의해 정의 된대로"Content"파편, 더 허용적인 것을 참조하여 정의"문서 노드"10073_10230토토 캔valueis document특정 여부를 평가하는 데 사용할 수 있습니다토토 캔값은 전체 문서이거나 콘텐츠 단편입니다.
유형 값을 생성하려면토토 캔문자 데이터에서 함수 사용토토 캔parse
:
토토 캔PARSE (document | contentvalue)
예 :
토토 캔PARSE (Document '<? 토토 캔 버전 = "1.0"? <book <title 매뉴얼 </title <chapter ... </챕터 </book') 토토 캔PARSE (Content 'ABC <FOO BAR </foo <lar foo </bar')
SQL 표준에 따라 문자열 문자열을 토토 캔 값으로 변환하는 유일한 방법이지만 PostgreSQL 특이 적 구문 :
토토 캔 '<FOO BAR </foo' '<foo bar </foo':: xml
사용할 수 있습니다.
the토토 캔유형은 입력 값이 DTD를 지정하는 경우에도 문서 유형 선언 (DTD)에 대한 입력 값을 검증하지 않습니다. 현재 토토 캔 스키마와 같은 다른 토토 캔 스키마 언어에 대한 유효성 검사에 대한 내장 지원이 없습니다.
역 작동, 문자열 값을 생성토토 캔, 함수 사용토토 캔serialize
:
토토 캔Serialize (document | contentvalueastype)
typecan be캐릭터, 캐릭터 다양한또는텍스트(또는 그 중 하나에 대한 별칭). 다시 한 번 SQL 표준에 따르면, 이것이 유형간에 변환하는 유일한 방법입니다토토 캔및 문자 유형이지만 PostgreSQL도 간단히 값을 시전 할 수 있습니다.
문자열 값이 유형으로 나오는 경우토토 캔통과하지 않고토토 캔PARSE또는토토 캔serialize각각 선택의 선택문서versus컨텐츠"토토 캔 옵션"세션 구성 매개 변수. 표준 명령을 사용하여 설정할 수 있습니다.
SET 토토 캔 옵션 document | 콘텐츠 ;
또는 더 많은 PostgreSQL 유사 구문
토토 캔option을 document |로 설정하십시오 콘텐츠 ;
기본값은컨텐츠, 토토 캔 데이터의 모든 형태가 허용됩니다.
클라이언트, 서버 및 토토 캔 데이터에서 여러 문자 인코딩을 처리 할 때는주의를 기울여야합니다. 텍스트 모드를 사용하여 쿼리를 서버로 전달하고 클라이언트 (일반 모드)에 쿼리 결과를 전달할 때 PostgreSQL은 클라이언트와 서버 사이에 전달되는 모든 문자 데이터를 변환하며 그 반대는 각각의 끝의 문자 인코딩으로 변환합니다. 보다PostgreSQL : 문서 : 9.4 : 문자 토토 커뮤니티 지원. 여기에는 위의 예에서와 같이 토토 캔 값의 문자열 표현이 포함됩니다. 이는 일반적으로 토토 캔 데이터에 포함 된 인코딩 선언이 클라이언트와 서버 사이를 이동하는 동안 문자 데이터가 다른 인코딩으로 변환되므로 유효하지 않을 수 있음을 의미합니다. 이 동작에 대처하려면,에 입력을 위해 제시된 문자열에 포함 된 선언을 인코딩합니다.토토 캔type are무시및 컨텐츠는 현재 서버 인코딩에 있다고 가정합니다. 결과적으로 올바른 처리를 위해서는 토토 캔 데이터의 문자열이 현재 클라이언트 인코딩의 클라이언트로부터 전송되어야합니다. 문서를 서버로 전송하기 전에 문서를 현재 클라이언트 인코딩으로 변환하거나 클라이언트 인코딩을 적절하게 조정하는 것은 클라이언트의 책임입니다. 출력시 유형 값토토 캔인코딩 선언이 없으며 클라이언트는 모든 데이터가 현재 클라이언트 인코딩에 있다고 가정해야합니다.
이진 모드를 사용하여 쿼리 매개 변수를 서버로 전달하고 클라이언트로 다시 쿼리 결과를 전달할 때 문자 세트 변환이 수행되지 않으므로 상황이 다릅니다. 이 경우, 토토 캔 데이터의 인코딩 선언이 관찰되며, 결여 된 경우 데이터는 UTF-8에있는 것으로 가정됩니다 (토토 캔 표준에 따라 필요한대로 PostgreSQL이 UTF-16을 지원하지 않음). 출력시 데이터는 클라이언트 인코딩이 UTF-8이 아닌 한 클라이언트 인코딩을 지정하는 인코딩 선언이 있습니다.이 경우 생략됩니다..
토토 캔 데이터 인코딩, 클라이언트 인코딩 및 서버 인코딩이 동일하면 PostgreSQL로 토토 캔 데이터를 처리하는 것이 오류가 덜 발생하고 효율적으로 작동합니다. 토토 캔 데이터는 UTF-8에서 내부적으로 처리되므로 서버 인코딩이 UTF-8이면 계산이 가장 효율적입니다.
주의 |
서버 인코딩이 UTF-8이 아닌 경우 일부 토토 캔 관련 함수는 비 ASCII 데이터에서 전혀 작동하지 않을 수 있습니다. 이것은에 대한 문제로 알려져 있습니다. |
the토토 캔데이터 유형은 비교 연산자를 제공하지 않는다는 점에서 드문 일입니다. 토토 캔 데이터에 대한 잘 정의되고 보편적으로 유용한 비교 알고리즘이 없기 때문입니다. 이것의 결과는 an을 비교하여 행을 검색 할 수 없다는 것입니다.토토 캔검색 값에 대한 열. 따라서 토토 캔 값은 일반적으로 ID와 같은 별도의 키 필드를 동반해야합니다. 토토 캔 값을 비교하기위한 대체 솔루션은 먼저 문자열로 변환하는 것이지만, 문자열 비교는 유용한 토토 캔 비교 방법과 관련이 거의 없습니다.
에 대한 비교 연산자가 없기 때문에토토 캔데이터 유형에서는이 유형의 열에서 직접 색인을 생성 할 수 없습니다. 토토 캔 데이터의 빠른 검색이 원하는 경우, 가능한 해결 방법에는 표현식을 문자열 유형에 캐스트하고이를 인덱싱하거나 XPath 표현식을 색인화하는 것이 포함됩니다. 물론 실제 쿼리는 인덱스 된 표현식으로 검색하도록 조정해야합니다.
PostgreSQL의 텍스트 검색 기능을 사용하여 토토 캔 데이터의 전체 문서 검색 속도를 높일 수 있습니다. 그러나 필요한 전처리 지원은 아직 PostgreSQL 분포에서 사용할 수 없습니다.