답변:
아니요 , Postgres 표준 배포판에는 1 바이트 정수가 없습니다. 표준 Postgres의 모든 내장 숫자 유형은 2 바이트 이상을 차지합니다.
그러나 그래 , Postgres의 핵심 개발자 중 하나 인 Peter Eisentraut가 관리 하는 확장 pguint가 있습니다. 표준 배포판의 일부가 아닙니다.
다양한 부호없는 정수 유형 외에도 찾고있는 1 바이트 정수를 제공합니다.
int1 (signed 8-bit integer)
uint1 (unsigned 8-bit integer)
uint2 (unsigned 16-bit integer)
uint4 (unsigned 32-bit integer)
uint8 (unsigned 64-bit integer)
가능한 합병증을 설명하는 링크 된 사이트에서 "토론"장을 읽으십시오. 더 많은 정수 유형을 도입 할 때는 유형 캐스트 및 숫자 리터럴에주의를 기울여야합니다 ...
가능한 간단한 해결 방법은 1 바이트 정수 값을 "char"
"내부"단순한 1 문자 유형 으로 인코딩하는 것 입니다. 실제로는 단일 바이트 스토리지 , 부호있는 1 바이트 정수의 바이트 값, 상위 절반은 ASCII 문자
-128 ~ 127 범위의 값을 인코딩 할 수 있습니다 . 데모:
SELECT i
, i::"char"
, i::"char"::int
FROM generate_series(-128,127) i;
표시 할 수없는 문자가 여러 개 있습니다. 따라서 표시하기 전에 저장하고 디코딩 하기 전에 인코딩하십시오 ...
기억하십시오 : "char"
간단하고 저렴한 열거를위한 "내부"유형입니다. 공식적으로 설계되지 않았으며 다른 RDBMS로 이식 할 수 없습니다. 이에 대한 Postgres 프로젝트의 보증은 없습니다.
필자의 초기 제안은 부호없는 1 바이트 정수 (0-255)의 범위를 다루고 text
디딤돌로 사용할 수 있다는 가정에 근거하여 부주의하게 제안되었습니다 . 에반은 내 길의 오류를 지적했다 : 그것은 1에서 127까지만 작동하고 나머지는 실패합니다. 대신, 캐스트 사이에 127 정수 범위를 -128 사용 "char"
하고 integer
두 문제를 해결하기 위해 직접.