텍스트 타입
텍스트 타입
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문서를 참고해 주세요.