メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

文字型を使用する例

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)
CITY_NAME 列 (CHAR 列) の 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) が列にロードされます。