그바이테아데이터 유형은 다음을 저장할 수 있습니다. 바이너리 문자열; 참조표 8-6.
바이너리 문자열은 옥텟(또는 바이트)의 시퀀스입니다. 바이너리 문자열은 두 가지 점으로 문자열과 구별됩니다. 특성: 첫째, 젠 토토 문자열은 특히 저장을 허용합니다. 값 0 및 기타의 옥텟"인쇄할 수 없음"옥텟(보통 옥텟 외부 범위는 32~126). 문자열은 0옥텟을 허용하지 않습니다. 또한 다른 옥텟 값과 옥텟 시퀀스도 허용하지 않습니다. 데이터베이스의 선택에 따라 유효하지 않은 값 문자 세트 인코딩. 둘째, 바이너리 문자열에 대한 연산 실제 바이트를 처리하는 반면 문자를 처리합니다. 문자열은 로케일 설정에 따라 다릅니다. 즉, 이진 문자열은 다음과 같습니다. 프로그래머가 생각하는 데이터를 저장하는 데 적합합니다."원시 바이트", 반면 문자열은 텍스트를 저장하는 데 적합합니다.
입장 시바이테아값, 옥텟 특정 값반드시수 이스케이프됨(그러나 모든 옥텟 값할 수 있다이스케이프됨)의 일부로 사용되는 경우 문자열 리터럴의SQL성명. 일반적으로 옥텟을 이스케이프하려면 다음과 같이 변환됩니다. 10진수 옥텟에 해당하는 세 자리 8진수 값 앞에는 두 개의 백슬래시가 옵니다.표 8-7쇼 이스케이프해야 하는 문자와 대체 문자를 제공합니다. 해당되는 경우 이스케이프 시퀀스.
표 8-7.바이테아리터럴 이스케이프된 옥텟
| 10진수 옥텟 값 | 설명 | 이스케이프된 입력 표현 | 예 | 출력 표현 | 
|---|---|---|---|---|
| 0 | 0옥텟 | E'\\000' | SELECT E'\\000'::bytea; | \000 | 
| 39 | 작은따옴표 | ''''또는E'\\047' | SELECT E'\''::bytea; | ' | 
| 92 | 백슬래시 | E'\\\\'또는E'\\134' | SELECT E'\\\\'::bytea; | \\ | 
| 0 ~ 31 및 127 ~ 255 | "인쇄할 수 없음"옥텟 | E'\\xxx'(8진수 값) | SELECT E'\\001'::bytea; | \001 | 
탈출 요건"인쇄할 수 없음"옥텟은 실제로 다음에 따라 다릅니다. 로케일 설정에서. 어떤 경우에는 벗어날 수 있습니다. 이스케이프되지 않은 상태로 두십시오. 각 항목의 결과를 참고하세요. 예시표 8-7이었음 출력이 정확히 1옥텟 길이임에도 불구하고 0 옥텟과 백슬래시 표현이 둘 이상입니다. 문자.
백슬래시를 너무 많이 써야 하는 이유는 다음과 같습니다. 에 표시됨표 8-7, 입니다 문자열 리터럴로 작성된 입력 문자열은 다음을 통과해야 합니다. 두 개의 구문 분석 단계를 통해PostgreSQL서버. 첫 번째 백슬래시 각 쌍은 다음에서 이스케이프 문자로 해석됩니다. 문자열 리터럴 파서(이스케이프 문자열 구문이 사용된다고 가정) 및 따라서 쌍의 두 번째 백슬래시가 남고 소비됩니다. (달러 인용 문자열을 사용하면 이러한 수준의 오류를 방지할 수 있습니다. 이스케이프 처리됩니다.) 그러면 나머지 백슬래시는바이테아다음 중 하나를 시작하는 입력 함수 세 자리 8진수 값이거나 다른 백슬래시를 이스케이프합니다. 에 대한 예를 들어 서버에 다음과 같이 전달된 문자열 리터럴입니다.E'\\001'되다\001이스케이프 문자열 파서를 통과한 후. 그만큼\001그런 다음 다음으로 전송됩니다.바이테아입력 함수, 여기서는 10진수 값이 1인 단일 옥텟입니다. 작은따옴표 문자는 특별히 처리되지 않습니다.바이테아, 따라서 문자열에 대한 일반적인 규칙을 따릅니다. 리터럴. (또한 참조섹션 4.1.2.1.)
바이테아옥텟도 다음에서 이스케이프됩니다. 출력. 일반적으로 각"인쇄할 수 없음"옥텟은 옥텟으로 변환됩니다. 3자리 8진수 값에 해당하며 앞에 백슬래시가 하나 옵니다. 대부분"인쇄 가능"옥텟은 클라이언트의 표준 표현으로 표현됩니다. 문자 집합. 10진수 값이 92(백슬래시)인 옥텟은 다음을 갖습니다. 특별한 대체 출력 표현. 자세한 내용은 다음을 참조하세요.테이블 8-8.
표 8-8.바이테아출력 이스케이프된 옥텟
| 십진수 옥텟 값 | 설명 | 이스케이프된 출력 표현 | 예 | 출력 결과 | 
|---|---|---|---|---|
| 92 | 백슬래시 | \\ | SELECT E'\\134'::bytea; | \\ | 
| 0~31 및 127~255 | "인쇄할 수 없음"옥텟 | \xxx(8진수 값) | SELECT E'\\001'::bytea; | \001 | 
| 32 ~ 126 | "인쇄 가능"옥텟 | 클라이언트 문자 집합 표현 | SELECT E'\\176'::bytea; | ~ | 
프런트 엔드에 따라 다름PostgreSQL당신이 사용하면, 당신은 추가를 가질 수 있습니다 탈출 및 탈출과 관련해 해야 할 일바이테아문자열. 예를 들어 다음을 수행해야 할 수도 있습니다. 인터페이스의 경우 이스케이프 라인 피드 및 캐리지 리턴 자동으로 번역됩니다.
그SQL표준은 다른 젠 토토 문자열 유형, 호출됨BLOB또는젠 토토 대형 객체. 입력 형식은 와는 다르다바이테아, 하지만 제공된 함수와 연산자는 대부분 동일합니다.