메인 콘텐츠로 건너뛰기
N바이트 길이의 고정 문자열입니다(문자 수나 코드 포인트 수 기준이 아님). FixedString 타입의 컬럼을 선언하려면 다음 구문을 사용합니다:
여기서 N은 자연수입니다. FixedString 타입은 데이터 길이가 정확히 N바이트일 때 효율적입니다. 그 외의 경우에는 오히려 효율이 떨어질 가능성이 높습니다. FixedString 타입이 지정된 컬럼에 효율적으로 저장할 수 있는 값의 예시는 다음과 같습니다.
  • IP 주소의 이진 표현 (FixedString(16)은 IPv6에 사용).
  • 언어 코드 (ru_RU, en_US … ).
  • 통화 코드 (USD, RUB … ).
  • 해시의 이진 표현 (FixedString(16)은 MD5에, FixedString(32)는 SHA256에 사용).
UUID 값을 저장하려면 UUID 데이터 타입을 사용하십시오. 데이터를 삽입할 때 ClickHouse는 다음과 같이 동작합니다.
  • 문자열이 N바이트보다 적으면 null byte를 추가해 문자열을 채웁니다.
  • 문자열이 N바이트보다 많으면 Too large value for FixedString(N) 예외를 발생시킵니다.
다음과 같은, FixedString(2) 컬럼 하나만 있는 테이블을 살펴보겠습니다.
FixedString(N) 값의 길이는 고정되어 있다는 점에 유의하십시오. length 함수는 FixedString(N) 값이 null byte로만 채워져 있어도 N을 반환하지만, 이 경우 empty 함수는 1을 반환합니다. WHERE 절로 데이터를 조회할 때는 조건을 어떻게 지정하느냐에 따라 결과가 달라집니다.
  • 동등 연산자 =, == 또는 equals 함수를 사용하면 ClickHouse는 \0 문자를 고려하지 않습니다. 즉, 쿼리 SELECT * FROM FixedStringTable WHERE name = 'a';SELECT * FROM FixedStringTable WHERE name = 'a\0'; 는 동일한 결과를 반환합니다.
  • LIKE 절을 사용하면 ClickHouse는 \0 문자를 고려합니다. 따라서 필터 조건에 \0 문자를 명시적으로 지정해야 할 수 있습니다.
마지막 수정일 2026년 6월 10일