

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# 文字型
<a name="r_Character_types"></a>

**Topics**
+ [ストレージと範囲](#r_Character_types-storage-and-ranges)
+ [CHAR または CHARACTER](#r_Character_types-char-or-character)
+ [VARCHAR または CHARACTER VARYING](#r_Character_types-varchar-or-character-varying)
+ [NCHAR 型および NVARCHAR 型](#r_Character_types-nchar-and-nvarchar-types)
+ [TEXT 型および BPCHAR 型](#r_Character_types-text-and-bpchar-types)
+ [末尾の空白の重要性](#r_Character_types-significance-of-trailing-blanks)
+ [文字型を使用する例](r_Examples_with_character_types.md)

文字データ型には、CHAR (文字) や VARCHAR (可変文字) などがあります。

## ストレージと範囲
<a name="r_Character_types-storage-and-ranges"></a>

CHAR および VARCHAR のデータ型は、文字単位でなくバイト単位で定義されます。CHAR 列にはシングルバイト文字のみを含めることができます。したがって、CHAR(10) 列には、最大 10 バイト長の文字列を含めることができます。VARCHAR にはマルチバイト文字 (1 文字あたり最大で 4 バイトまで) を含めることができます。例えば、VARCHAR(12) 列には、シングルバイト文字なら 12 個、2 バイト文字なら 6 個、3 バイト文字なら 4 個、4 バイト文字なら 3 個含めることができます。

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_Character_types.html)

**注記**  
CREATE TABLE 構文では、文字データ型の MAX キーワードをサポートします。例えば、次のようになります。  

```
create table test(col1 varchar(max));
```
CHAR の場合、MAX は列幅を 4096 バイトとして定義します。  
VARCHAR の場合、MAX は CREATE TABLE ステートメントの列幅を 65,535 バイトとして定義します。メモリ内のオペレーションの場合、VARCHAR (MAX) は最大 16,000,000 バイトをサポートします。

## CHAR または CHARACTER
<a name="r_Character_types-char-or-character"></a>

固定長の文字列を格納するには、CHAR または CHARACTER を使用します。これらの文字列は空白で埋められるので、CHAR(10) 列は常に 10 バイトのストレージを占有します。

```
char(10)
```

 長さの指定がない場合 CHAR 列は、CHAR(1) 列になります。

## VARCHAR または CHARACTER VARYING
<a name="r_Character_types-varchar-or-character-varying"></a>

一定の制限を持つ可変長の文字列を格納するには、VARCHAR 列または CHARACTER VARYING 列を使用します。これらの文字列は空白で埋められないので、VARCHAR(120) 列は、最大で 120 個のシングルバイト文字、60 個の 2 バイト文字、40 個の 3 バイト文字、または 30 個の 4 バイト文字で構成されます。

```
varchar(120)
```

CREATE TABLE ステートメントで長さの指定子なしで VARCHAR データ型を使用すると、デフォルト長は 256 になります。

[文字列関数](String_functions_header.md) は最大 16,000,000 バイトをサポートするようになりました。例えば、CONCAT 関数の出力は以前は 65,535 バイトに制限されていましたが、最大 16,000,000 バイトをサポートするようになりました。

```
SELECT LEN(CONCAT(REPEAT('A', 5000000), REPEAT('B', 5000000))) AS total_length;

 total_length
--------------
     10000000
```

## NCHAR 型および NVARCHAR 型
<a name="r_Character_types-nchar-and-nvarchar-types"></a>

NCHAR 型および NVARCHAR 型 (NATIONAL CHARACTER 型および NATIONAL CHARACTER VARYING 型と呼ぶこともある) で、列を作成できます。これらの型はそれぞれ CHAR 型と VARCHAR 型に変換され、指定されたバイト数で格納されます。

長さを指定しない場合、NCHAR 列は CHAR(1) 列に変換されます。

長さを指定しない場合、NVARCHAR 列は VARCHAR(256) 列に変換されます。

## TEXT 型および BPCHAR 型
<a name="r_Character_types-text-and-bpchar-types"></a>

TEXT 列を使用して Amazon Redshift テーブルを作成できますが、この列は最大 256 文字の可変長値を受け入れる VARCHAR(256) 列に変換されます。

BPCHAR (空白で埋められる文字) 型を使用して Amazon Redshift 列を作成できますが、この列によって固定長の CHAR(256) 列に変換されます。

## 末尾の空白の重要性
<a name="r_Character_types-significance-of-trailing-blanks"></a>

CHAR と VARCHAR のデータ型は両方とも、最大 *n* バイト長の文字列を格納できます。それよりも長い文字列をこれらの型の列に格納しようとすると、エラーが発生します。ただし、余分な文字がすべてスペース (空白) ならば例外で、文字列は最大長に切り捨てられます。文字列の長さが最大長よりも短い場合、CHAR 値は空白で埋められますが、VARCHAR 値では空白なしで文字列を格納します。

CHAR 値の末尾の空白はいつも意味的に重要であるとは限りません。末尾の空白は、LENGTH 計算を含めないで 2 つの CHAR 値を比較するときは無視され、CHAR 値を別の文字列型に変換するときは削除されます。

VARCHAR および CHAR の値の末尾の空白は、値が比較されるとき、意味的に重要でないものとして扱われます。

長さの計算によって返される VARCHAR キャラクタ文字列の長さには末尾の空白が含められます。固定長のキャラクタ文字列の長さを計算する場合、末尾の空白はカウントされません。