Postgresql 9.1.24 문서 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.1 : 롤 토토 유형 | up | 8 장. 데이터 유형 | PostgreSQL : 문서 : 9.1 : 날짜/토토 사이트 추천 유형 |
BYTEA데이터 유형은 저장을 허용합니다 토토 핫 문자열; 보다표 8-6.
토토 핫 문자열은 일련의 옥트 (또는 바이트)입니다. 토토 핫 문자열은 두 가지 방식으로 문자 문자열과 구별됩니다. 먼저, 토토 핫 문자열은 특히 옥넷을 저장할 수 있습니다 0 및 기타"인쇄 할 수없는"Octets (보통, 32 ~ 126의 범위 외부의 옥팅). 문자열 제로 옥제를 허용하지 않고 다른 옥트 값을 허용하지 않습니다. 및 데이터베이스의 선택된 문자 세트 인코딩. 둘째, 운영 토토 핫 문자열은 실제 바이트를 처리하는 반면 처리는 처리됩니다 문자열의 문자열은 로케일 설정에 따라 다릅니다. 요컨대, 토토 핫 문자열은 프로그래머의 데이터를 저장하는 데 적합합니다 AS의 생각"원시 바이트"캐릭터 문자열은 텍스트 저장에 적합합니다.
theBYTEA타입은 두 개의 외부를 지원합니다 입력 및 출력 형식 :PostgreSQL의 역사적"탈출"형식 및"hex"형식. 이 두 가지 모두 항상 받아 들여집니다 입력. 출력 형식은 구성 매개 변수에 따라 다릅니다.bytea_output; 기본값은 16 진수입니다. (HEX 형식은에서 소개되었습니다.PostgreSQL9.0; 이전 버전 그리고 일부 도구는 그것을 이해하지 못합니다.)
theSQL표준 정의 a 다른 바이너리 스트링 유형,Blob또는토토 핫 큰 개체. 입력 형식은입니다 와 다릅니다BYTEA그러나 제공됩니다 기능과 운영자는 대부분 동일합니다.
the"hex"형식은 바이너리를 인코딩합니다 바이트 당 26 진수 숫자로서의 데이터, 가장 중요한 니블 첫 번째. 전체 문자열에는 시퀀스가 앞서\ x(탈출 형식과 구별하기 위해). 어떤 상황에서는 초기 백 슬래시를 피해야 할 수도 있습니다. 배가가 필요한 것과 같은 경우에 두 배로 탈출 형식으로 두 배가됩니다. 세부 사항은 아래에 나타납니다. 그만큼 16 진수 숫자는 상류 또는 소문자 일 수 있으며 숫자 쌍 사이에 공백이 허용됩니다 ( 숫자 쌍 또는 시작\ x시퀀스). HEX 형식은 광범위한 것과 호환됩니다. 외부 응용 프로그램 및 프로토콜, 더 빠른 경향이 있습니다. 탈출 형식보다 변환하려면 사용이 선호됩니다.
예 :
선택 E '\\ xdeadbeef';
the"탈출"형식입니다 전통적인PostgreSQL형식BYTEA타입. 접근 방식이 필요합니다 이진 스트링을 ASCII 시퀀스로 표현하는 것 캐릭터, 할 수없는 바이트를 변환하면서 특별 탈출로 ASCII 캐릭터로 표시됩니다 시퀀스. 응용 프로그램의 관점에서 캐릭터로 바이트를 나타내는 것이 의미가 있습니다 표현이 편리 할 수 있습니다. 그러나 실제로는 보통입니다 이진의 구별이 퍼지기 때문에 혼란 스럽습니다 현과 문자열, 그리고 특정 탈출 선택된 메커니즘은 다소 다루기 쉬운 것입니다. 그래서이 형식 대부분의 새로운 응용 프로그램에 대해서는 피해야 할 것입니다.
입력시BYTEA탈출 값 형식, 특정 값의 낙지필수모든 옥넷 동안 탈출됩니다 값canbe 탈출. 일반적으로 옥셋을 탈출하려면 3 자리 홀 값 값과 백 슬래시 (또는 2 백 슬래시, 탈출을 사용하여 값을 문자 그대로 작성하는 경우 문자열 구문). Backslash 자체 (Octet value 92)는 할 수 있습니다 또는 이중 백 슬래시로 표현됩니다.표 8-7탈출 해야하는 문자를 보여주고 해당되는 경우 대체 탈출 시퀀스.
표 8-7.BYTEA리터럴 탈출 한 옥제
십진 옥넷 값 | 설명 | 탈출 된 입력 표현 | example | 출력 표현 |
---|---|---|---|---|
0 | Zero Octet | E '\\ 000' | 선택 e '\\ 000':: bytea; | \ 000 |
39 | 단일 견적 | '' ''또는e '\\ 047' | 선택 E '\' ':: Bytea; | ' |
92 | backslash | e '\\\\'또는e '\\ 134' | 선택 e '\\\\':: Bytea; | \\ |
0 ~ 31 및 127 ~ 255 | "인쇄 할 수없는"Octets | e '\\xxx '(Octal Value) | 선택 e '\\ 001':: bytea; | \ 001 |
탈출 요구 사항인쇄 할 수없는Octets는 다양합니다 로케일 설정에 따라. 어떤 경우에는 얻을 수 있습니다 그들을 에스코지를 남기지 않고 떠나. 각각의 결과에 유의하십시오 의 예제표 8-7출력에도 불구하고 길이가 정확히 1 옥트입니다 표현은 때때로 하나 이상의 캐릭터입니다.
여러 백 슬래시가 필요한 이유테이블 8-7, 문자열 리터럴로 작성된 입력 문자열입니다. 에서 두 개의 구문 분석 단계를 통과해야합니다.PostgreSQL서버. 첫 번째 백 슬래시 각 쌍은 String-Literal Parser (Escape String 구문이 사용되었다고 가정) 따라서 소비되어 두 번째 백 슬래시를 남겨 둡니다. 쌍. (이 수준 의이 수준을 피하기 위해 달러에 따른 줄은 사용될 수 있습니다. 탈출.) 나머지 백 슬래시는에 의해 인식됩니다.BYTEA시작과 같은 입력 함수 a 3 자리 숫자 옥탈 값 또는 다른 백 슬래시를 빠져냅니다. 을 위한 예를 들어, 문자열 문자가 서버로 전달 된 문자열 문자e '\\ 001'\ 001탈출 문자열 파서를 통과 한 후. 그만큼\ 001그런 다음으로 전송됩니다.BYTEA입력 함수, 여기서 a로 변환됩니다 소수 값이 1 인 단일 옥셋. 단일 쿼트 캐릭터는 특별히 취급되지 않습니다BYTEA이므로 문자열에 대한 일반 규칙을 따릅니다 리터럴. (참조섹션 4.1.2.1.)
BYTEA옥제는 때때로 탈출됩니다 출력시. 일반적으로 각각"인쇄 할 수없는"Octet은 그것으로 변환됩니다 동등한 3 자리 옥탈 값은 1 값에 앞서 있습니다 백 슬래시. 최대"인쇄용"Octets 클라이언트의 표준 표현으로 표시됩니다 캐릭터 세트. 10 진수 값 92 (Backslash)를 가진 낙지는 다음과 같습니다 출력에서 두 배가되었습니다. 세부 사항은테이블 8-8.
표 8-8.BYTEA출력 탈출 한 옥제
십진 옥넷 값 | 설명 | 탈출 된 출력 표현 | example | 출력 결과 |
---|---|---|---|---|
92 | backslash | \\ | 선택 e '\\ 134':: bytea; | \\ |
0 ~ 31 및 127 ~ 255 | "인쇄 할 수없는"Octets | \xxx(Octal value) | 선택 e '\\ 001':: bytea; | \ 001 |
32 ~ 126 | "인쇄용"Octets | 클라이언트 문자 세트 표현 | 선택 e '\\ 176':: bytea; | ~ |
프론트 엔드에 따라PostgreSQL당신은 사용하고 있습니다 탈출 및 탈출 측면에서해야 할 추가 작업BYTEA줄. 예를 들어, 당신은 할 수 있습니다 또한 라인 피드와 캐리지 리턴을 탈출 해야하는 경우 인터페이스는 이것들을 자동으로 번역합니다.