이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다스포츠 토토 결과 PostgreSQL : 문서 : 17 : 8.4. 토토 캔 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

8.4. 이진 데이터 유형

theBYTEA데이터 유형은 저장을 허용합니다 토토 캔 문자열; 보다표 8-6.

표 8-6. 이진 데이터 유형

이름 스토리지 크기 설명
BYTEA 1 또는 4 바이트 + 실제 바이너리 문자열 가변 길이 토토 캔 문자열

바이너리 스트링은 일련의 옥트 (또는 바이트)입니다. 토토 캔 문자열은 두 가지 방식으로 문자 문자열과 구별됩니다. 먼저, 토토 캔 문자열은 특히 옥넷을 저장할 수 있습니다 0 및 기타"인쇄 할 수없는"Octets (보통, 십진수 32 ~ 126 외부의 옥팅). 성격 문자열은 제로 옥제를 허용하지 않고 다른 옥트를 허용하지 않습니다. 다음에 따라 유효하지 않은 옥셋 값의 값 및 시퀀스 데이터베이스의 선택된 문자 세트 인코딩. 둘째, 운영 토토 캔 문자열에서 실제 바이트를 처리하는 반면 처리는 처리됩니다. 문자열의 문자열은 로케일 설정에 따라 다릅니다. 요컨대, 토토 캔 문자열은 프로그래머가 생각하는 데이터를 저장하는 데 적합합니다. as"원시 바이트"반면 문자 문자열은 텍스트 저장에 적합합니다.

theBYTEA유형은 두 가지 형식을 지원합니다 입력 및 출력 :"hex"형식 및PostgreSQL의 역사적"탈출"형식. 이 두 가지 모두입니다 항상 입력에 받아 들여집니다. 출력 형식은 구성 매개 변수bytea_output; 그만큼 기본값은 16 진수입니다. (HEX 형식은에서 소개되었습니다.postgresql9.0; 이전 버전 그리고 일부 도구는 그것을 이해하지 못합니다.)

theSQL표준 정의 a 다른 바이너리 스트링 유형,Blob또는토토 캔 큰 개체. 입력 형식은입니다 와 다릅니다BYTEA그러나 제공 기능과 운영자는 대부분 동일합니다.

8.4.1. BYTEA육각형

the"hex"형식은 토토 캔 데이터를 인코딩합니다 바이트 당 2 개의 16 진수 숫자로, 가장 중요한 니블은 먼저. 전체 문자열에는 시퀀스가 ​​앞서\ x(탈출 형식과 구별하기 위해). ~ 안에 일부 컨텍스트, 초기 백 슬래시는 배가가되어야하는 것과 같은 경우에 두 배 탈출 형식으로 두 배; 세부 사항은 아래에 나타납니다. 16 진 숫자는 상류 또는 소문자 일 수 있으며, 공백은 숫자 쌍 사이에 허용됩니다 (그러나 숫자 쌍 내에 있거나 시작\ x시퀀스). Hex 형식 광범위한 외부 응용 프로그램과 호환되며 프로토콜, 탈출보다 변환하는 것이 더 빠릅니다. 형식이므로 사용이 선호됩니다.

예 :

'\ xdeadbeef'; 선택

8.4.2. BYTEA탈출 형식

the"탈출"형식입니다 전통적인PostgreSQL형식 그만큼BYTEA타입. 접근이 필요합니다 토토 캔 문자열을 ASCII 문자 시퀀스로 표현하고 ASCII로 표현할 수없는 바이트를 변환하는 동안 특수 탈출 시퀀스로의 캐릭터. 관점에서 캐릭터로 바이트를 나타내는 응용 프로그램의 이 표현은 편리 할 수 ​​있습니다. 그러나 실제로는입니다 일반적으로 혼란 스럽습니다 토토 캔 문자열과 특성 문자열 및 특정 선택된 탈출 메커니즘은 다소 다루기 쉬운 것입니다. 그러므로, 이 형식은 아마도 대부분의 새로운 것에 대해 피해야합니다 응용 프로그램.

입력 할 때BYTEA탈출 값 형식, 특정 값의 낙지필수모든 Octet 동안 탈출됩니다 값can탈출하십시오. ~ 안에 일반, 옥넷을 피하기 위해 3 자리 옥탈로 변환하십시오. 백 슬래시 (또는 쓰기하는 경우 두 개의 백 슬래시로 가치를 높이고 앞서 Escape String 구문을 사용하여 문자 그럴로서의 값). 백 슬래시 자체 (Octet Decimal Value 92)는 대안으로 이중 백 슬래시.표 8-7쇼 탈출 해야하는 캐릭터와 대안을 제공합니다. 해당되는 경우 탈출 시퀀스.

표 8-7.BYTEA문자가 탈출 옥넷

십진 옥넷 값 설명 탈출 된 입력 표현 example 출력 표현
0 Zero Octet '\ 000' 선택 '\ 000':: bytea; \ x00
39 단일 견적 '' ''또는'\ 047' 선택 '' '':: bytea; \ x27
92 backslash '\'또는'\\ 134' 선택 '\\':: bytea; \ x5c
0 ~ 31 및 127 ~ 255 "인쇄 할 수없는"Octets '\xxx '(Octal Value) 선택 '\ 001':: bytea; \ x01

탈출 요구 사항인쇄 할 수없는Octets는에 따라 다릅니다 로케일 설정에서. 경우에 따라 떠나는 상태에서 벗어날 수 있습니다 그들은 에스카하지 못했습니다. 의 각 예제에서의 결과는에 유의합니다.표 8-7출력에도 불구하고 정확히 1 옥셋 길이였습니다. 표현은 때때로 하나 이상의 캐릭터입니다.

여러 백 슬래시가 필요한 이유테이블 8-7, 문자열 리터럴로 작성된 입력 문자열은 에서 두 개의 구문 분석 단계를 통과합니다.PostgreSQL서버. 각각의 첫 번째 백 슬래시 쌍은 String-Literal에 의해 탈출 문자로 해석됩니다. 구문 분석기 (Escape String Syntax가 사용되었다고 가정) 따라서 쌍의 두 번째 백 슬래시를 남겨두고 소비되었습니다. (달러 인용 문자열은이 수준의 탈출을 피하기 위해 사용될 수 있습니다.) 나머지 그런 다음 백 슬래시는에 의해 인식됩니다.BYTEA3 자리 숫자 옥탈 값 또는 또 다른 백 슬래시를 탈출합니다. 예를 들어, 문자열 문자가 전달되었습니다 서버 as'\ 001'\ 001탈출 문자열 파서를 통과 한 후. 그만큼\ 001BYTEA입력 함수, 여기서 단일로 변환됩니다 소수점 값이 1 인 옥트. 단일 쿼트 캐릭터는 특별히 취급되지 않습니다BYTEA, 따라서 문자열 리터럴의 일반적인 규칙을 따릅니다. (참조섹션 4.1.2.1.)

BYTEAOctets가 출력됩니다hex기본적으로 형식. 변경하면bytea_outputto탈출, "인쇄 할 수없는"Octet은 동등한 것으로 변환됩니다 3 자리 100 값 값과 하나의 백 슬래시가 앞서 있습니다. 최대"인쇄용"Octets는 그것들에 의해 출력됩니다 클라이언트 문자 세트의 표준 표현 (예 :

SET BYTEA_OUTPUT = 'ESCAPE';

'ABC \ 153 \ 154 \ 155 \ 052 \ 251 \ 124':: BYTEA;
     바이트
---------------
 ABC KLM *\ 251T

소수점 값 92 (Backslash)의 옥트는 두 배가됩니다. 산출. 세부 사항은표 8-8.

표 8-8.BYTEA출력 탈출 옥넷

십진 옥넷 값 설명 탈출 된 출력 표현 example 출력 결과
92 backslash \\ 선택 '\ 134':: bytea; \\
0 ~ 31 및 127 ~ 255 "인쇄 할 수없는"Octets \xxx(Octal Value) 선택 '\ 001':: bytea; \ 001
32 ~ 126 "인쇄용"Octets 클라이언트 문자 세트 표현 선택 '\ 176':: Bytea; ~

프론트 엔드에 따라PostgreSQL당신이 사용하면 추가가있을 수 있습니다 탈출과 탈출 측면에서해야 할 일BYTEA줄. 예를 들어, 당신도해야 할 수도 있습니다 인터페이스 인 경우 이스케이프 라인 피드 및 캐리지가 반환됩니다 이것들을 자동으로 번역합니다.