텍스트 타입

텍스트 타입

DuckDB에서 문자열은 VARCHAR 필드에 저장돼요. 이 필드는 유니코드 문자를 저장할 수 있으며, 내부적으로 데이터는 UTF-8로 인코딩됩니다.

출처: 문서

본문

이름 별칭 설명
VARCHAR CHAR, BPCHAR, STRING, TEXT 가변 길이 문자 문자열
VARCHAR(n) CHAR(n), BPCHAR(n), STRING(n), TEXT(n) 가변 길이 문자 문자열. 최대 길이 n은 효과가 없으며 호환성을 위해서만 제공됨

길이 제한 지정

VARCHAR, STRING, TEXT 타입의 길이를 지정하는 것은 필수가 아니며 시스템에 효과가 없어요. 길이를 지정해도 성능이 향상되거나 데이터베이스의 문자열 스토리지 공간이 줄어들지 않아요. 이 변형들은 문자열에 길이 지정을 요구하는 다른 시스템과의 호환성을 위해 지원돼요.

데이터 무결성 이유로 VARCHAR 컬럼의 문자 수를 제한하고 싶다면 CHECK 제약을 사용해야 해요. 예를 들어:

CREATE TABLE strings (
    val VARCHAR CHECK (length(val) <= 10) -- val의 최대 길이는 10
);

VARCHAR 필드는 유니코드 문자를 저장할 수 있어요. 내부적으로 데이터는 UTF-8로 인코딩됩니다.

압축 타입 지정

USING COMPRESSION 절로 문자열에 압축 타입을 지정할 수 있어요. 예를 들어, zstd 압축을 적용하려면 다음을 실행하세요.

CREATE TABLE tbl (s VARCHAR USING COMPRESSION zstd);

텍스트 타입 값

텍스트 타입의 값은 문자 문자열이며, 문자열 값 또는 그냥 문자열이라고도 불려요. 런타임에 문자열 값은 다음 방식 중 하나로 구성됩니다.

  • 선언되거나 암묵된 타입이 텍스트 데이터 타입인 컬럼 참조
  • 문자열 리터럴
  • 표현식을 텍스트 타입으로 캐스팅
  • 문자열 연산자를 적용하거나 텍스트 타입 값을 반환하는 함수 호출

특수 문자가 있는 문자열

문자열에 특수 문자를 사용하려면 이스케이프 문자열 리터럴 또는 달러-쿼트 문자열 리터럴을 사용하세요. 또는 연결과 chr 문자 함수를 사용할 수 있어요.

SELECT 'Hello' || chr(10) || 'world' AS msg;
┌──────────────┐
│     msg      │
│   varchar    │
├──────────────┤
│ Hello\nworld │
└──────────────┘

함수

텍스트 함수와 패턴 매칭 문서를 참고해 주세요.

더 알아보기 (Learn more)

  • 텍스트 함수는 sql/functions/text, 패턴 매칭은 sql/functions/pattern_matching 문서를 참고해 주세요.