本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
字元類型範例
CREATETABLE聲明
下面的CREATETABLE語句演示了使用VARCHAR和數CHAR據類型:
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列,所以插入的第二個地址中的尾隨空格在語義上是微不足道的。換句話說,下列這兩個插入的地址是相符合的。
insert into address(address1) values('9516 Magnolia Boulevard'); insert into address(address1) values('9516 Magnolia Boulevard ');
select count(*) from address where address1='9516 Magnolia Boulevard'; count ------- 2 (1 row)
如果該ADDRESS1列是一個CHAR列,並且插入了相同的值,則COUNT(*)查詢將識別字符串相同並返回2
。
LENGTH函數的結果
該LENGTH函數識別列中的尾隨空VARCHAR格:
select length(address1) from address; length -------- 23 25 (2 rows)
CITY_ NAME 欄Augusta
中的值 (即欄) 永遠會傳回 7 個CHAR字元的長度,而不論輸入字串中的尾隨空格為何。
超過資料欄長度的值
字元字串不會為了配合資料欄宣告的寬度而遭到截斷:
insert into address(city_name) values('City of South San Francisco'); ERROR: value too long for type character(20)
這個問題的解決方法,是將值轉換為符合資料欄的大小:
insert into address(city_name) values('City of South San Francisco'::char(20));
在這個例子中,字串 (City of South
San Fr
) 的前 20 個字元會載入資料欄。