メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

文字型を使用する例

CREATE TABLE ステートメント

次の CREATE TABLE ステートメントでは、VARCHAR および CHAR データタイプの使用を示しています。

Copy
create table address( address_id integer, address1 varchar(100), address2 varchar(50), district varchar(20), city_name char(20), state char(2), postal_code char(5) );

次の例ではこの表を使用しています。

可変長文字の文字列における末尾の空白

ADDRESS1 は VARCHAR 列であるため、2 番目の挿入アドレスの末尾の空白は意味的に重要ではありません。すなわち、これらの 2 つの挿入アドレスは一致します

Copy
insert into address(address1) values('9516 Magnolia Boulevard'); insert into address(address1) values('9516 Magnolia Boulevard ');
Copy
select count(*) from address where address1='9516 Magnolia Boulevard'; count ------- 2 (1 row)

もし ADDRESS1 列が CHAR 列であり、同じ値が挿入されたと仮定すると、COUNT(*) クエリはキャラクタ文字列を同じものとして認識し、2 を返します。

LENGTH 関数の結果

LENGTH 関数は、VARCHAR 列内の末尾の空白を認識します。

Copy
select length(address1) from address; length -------- 23 25 (2 rows)

CHAR 列である CITY_NAME 列の Augusta の値は、入力文字列内の末尾の空白に関係なく常に 7 文字になります。

列の長さを超える値

文字列は、宣言した列幅に適合するように切り捨てられることはありません。

Copy
insert into address(city_name) values('City of South San Francisco'); ERROR: value too long for type character(20)

この問題の解決策は、値を列のサイズにキャストすることです。

Copy
insert into address(city_name) values('City of South San Francisco'::char(20));

この場合は、文字列の最初の 20 文字 (City of South San Fr) が列にロードされます。