이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.스포츠 토토 결과 PostgreSQL : 문서 : 17 : 8.4. 이진 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

8.4. 바이너리 데이터 유형

바이테아데이터 유형은 다음을 저장할 수 있습니다. 바이너리 문자열; 참조표 8-6.

표 8-6. 바이너리 데이터 유형

이름 저장소 크기 설명
바이테아 1 또는 4바이트 + 실제 토토 캔 문자열 가변 길이 토토 캔 문자열

바이너리 문자열은 옥텟(또는 바이트)의 시퀀스입니다. 바이너리 문자열은 두 가지 방식으로 문자열과 구별됩니다. 첫째, 토토 캔 문자열은 특히 옥텟 값 저장을 허용합니다. 0 및 기타"인쇄할 수 없음"옥텟 (일반적으로 십진수 범위 32~126을 벗어난 옥텟) 캐릭터 문자열은 0옥텟을 허용하지 않으며 다른 옥텟도 허용하지 않습니다. 다음에 따라 유효하지 않은 값 및 옥텟 값의 시퀀스 데이터베이스가 선택한 문자 집합 인코딩입니다. 둘째, 운영 이진 문자열에서는 실제 바이트를 처리하는 반면, 처리는 문자열의 수는 로케일 설정에 따라 다릅니다. 한마디로 바이너리 문자열은 프로그래머가 생각하는 데이터를 저장하는 데 적합합니다. ~로"원시 바이트", 반면 문자 문자열은 텍스트를 저장하는 데 적합합니다.

바이테아유형은 두 가지 형식을 지원합니다. 입력 및 출력:"16진수"형식 및PostgreSQL의 역사"탈출"형식. 이 둘은 모두 입력 시 항상 허용됩니다. 출력 형식은 다음에 따라 다릅니다. 구성 매개변수bytea_output; 는 기본값은 16진수입니다. (16진수 형식은 다음에서 도입되었습니다.PostgreSQL9.0; 이전 버전 일부 도구는 이를 이해하지 못합니다.)

SQL표준은 다음을 정의합니다. 다른 이진 문자열 유형, 호출됨BLOB또는토토 캔 대형 객체. 입력 형식은 와는 다르다바이테아, 하지만 제공된 함수와 연산자는 대부분 동일합니다.

8.4.1. 바이테아16진수 형식

"16진수"형식은 토토 캔 데이터를 인코딩합니다. 바이트당 2개의 16진수로, 최상위 니블이 먼저 표시됩니다. 전체 문자열 앞에는 시퀀스가 옵니다.\x(이스케이프 형식과 구별하기 위해). 에서 일부 상황에서는 초기 백슬래시를 다음과 같이 이스케이프해야 할 수도 있습니다. 백슬래시를 사용해야 하는 동일한 경우에는 두 배로 늘립니다. 이스케이프 형식으로 두 배로 늘었습니다. 자세한 내용은 아래에 나타납니다. 16진수 숫자는 대문자 또는 소문자일 수 있으며 공백은 숫자 쌍 사이에는 허용되지만 숫자 쌍 내에서는 허용되지 않습니다. 시작\x시퀀스). 16진수 형식 다양한 외부 애플리케이션과 호환되며 프로토콜이며 이스케이프보다 변환이 더 빠른 경향이 있습니다. 형식이므로 사용이 선호됩니다.

예:

'\xDEADBEEF' 선택;

8.4.2. 바이테아이스케이프 형식

"탈출"형식은 전통적PostgreSQL형식바이테아유형. 의 접근 방식이 필요합니다. 이진 문자열을 일련의 ASCII 문자로 표현하고, ASCII로 표현될 수 없는 바이트를 변환하는 동안 문자를 특수 이스케이프 시퀀스로 변환합니다. 만약, 관점에서 보면 애플리케이션에서는 바이트를 문자로 표현하는 것이 합리적입니다. 그러면 이 표현이 편리할 수 있습니다. 그러나 실제로는 그렇습니다 일반적으로 둘 사이의 구별이 모호해지기 때문에 혼란스럽습니다. 이진 문자열과 문자열, 그리고 특정 선택한 탈출 메커니즘은 다소 다루기 어렵습니다. 그러므로, 이 형식은 아마도 대부분의 새로운 버전에서는 피해야 할 것입니다. 응용 프로그램.

입장 시바이테아이스케이프 값 형식, 특정 값의 옥텟반드시이스케이프되고 모든 옥텟은 값할 수 있다탈출됩니다. 에서 일반적으로 옥텟을 이스케이프하려면 이를 세 자리 8진수로 변환하세요. 값을 입력하고 그 앞에 백슬래시(또는 작성하는 경우 두 개의 백슬래시)를 추가합니다. 이스케이프 문자열 구문을 사용한 리터럴 값) 백슬래시 자체(옥텟 10진수 값 92)는 다음과 같이 나타낼 수도 있습니다. 이중 백슬래시.표 8-7쇼 이스케이프해야 하는 문자 및 대안 제공 해당되는 경우 이스케이프 시퀀스.

표 8-7.바이테아리터럴 이스케이프됨 옥텟

십진수 옥텟 값 설명 이스케이프된 입력 표현 출력 표현
0 0옥텟 '\000' 선택 '\000'::bytea; \x00
39 작은따옴표 ''''또는'\047' 선택 ''''::bytea; \x27
92 백슬래시 '\'또는'\\134' 선택 '\\'::bytea; \x5c
0~31 및 127~255 "인쇄할 수 없음"옥텟 '\xxx'(8진수 값) 선택 '\001'::bytea; \x01

탈출 요구사항인쇄할 수 없음옥텟은 다음에 따라 다름 로케일 설정에서. 어떤 경우에는 떠나는 것만으로도 벗어날 수 있습니다. 그들은 탈출하지 못했습니다. 다음의 각 예의 결과는 다음과 같습니다.표 8-7출력 결과에도 불구하고 길이는 정확히 1옥텟이었습니다. 표현은 때로는 두 문자 이상입니다.

다음과 같이 여러 개의 백슬래시가 필요한 이유테이블 8-7, 문자열 리터럴로 작성된 입력 문자열은 다음과 같아야 합니다. 에서 두 개의 구문 분석 단계를 통과합니다.PostgreSQL서버. 각각의 첫 번째 백슬래시 쌍은 문자열 리터럴에 의해 이스케이프 문자로 해석됩니다. 파서(이스케이프 문자열 구문이 사용된다고 가정)이므로 소비되어 쌍의 두 번째 백슬래시가 남습니다. (달러 인용 문자열을 사용하면 이러한 수준의 이스케이프를 피할 수 있습니다.) 나머지 백슬래시는 다음으로 인식됩니다.바이테아3자리 8진수 값 또는 또 다른 백슬래시를 이스케이프 처리합니다. 예를 들어, 다음으로 전달된 문자열 리터럴은 서버는 다음과 같습니다.'\001'되다\001이스케이프 문자열 파서를 통과한 후.\001그런 다음로 전송됩니다.바이테아입력 함수, 여기서 단일로 변환됨 10진수 값이 1인 옥텟입니다. 작은따옴표는 문자는 특별히 취급되지 않습니다.바이테아, 따라서 문자열 리터럴의 일반적인 규칙을 따릅니다. (또한 참조섹션 4.1.2.1.)

바이테아옥텟은 다음에 출력됩니다.16진수기본적으로 형식을 지정합니다. 변경하는 경우bytea_output탈출, "인쇄할 수 없음"옥텟은 동등한 것으로 변환됩니다. 3자리 8진수 값이고 앞에 백슬래시가 하나 옵니다. 대부분"인쇄 가능"옥텟은 다음에 의해 출력됩니다. 클라이언트 문자 집합의 표준 표현입니다. 예:

SET bytea_output = 'escape';

SELECT 'abc \153\154\155 \052\251\124'::bytea;
     바이티
----------------
 abc klm *\251T

십진수 값 92(백슬래시)의 옥텟은 출력. 자세한 내용은 다음을 참조하세요.표 8-8.

표 8-8.바이테아출력 이스케이프됨 옥텟

10진수 옥텟 값 설명 이스케이프된 출력 표현 출력 결과
92 백슬래시 \\ SELECT '\134'::bytea; \\
0 ~ 31 및 127 ~ 255 "인쇄할 수 없음"옥텟 \xxx(8진수 값) SELECT '\001'::bytea; \001
32 ~ 126 "인쇄 가능"옥텟 클라이언트 문자 집합 표현 SELECT '\176'::bytea; ~

프런트 엔드에 따라 다름PostgreSQL당신이 사용하면 추가로 탈출 및 탈출과 관련해 해야 할 일바이테아문자열. 예를 들어 다음을 수행해야 할 수도 있습니다. 인터페이스의 경우 이스케이프 라인 피드 및 캐리지 리턴 자동으로 번역됩니다.