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