本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
字元類型範例
CREATE TABLE 陳述式
下列的 CREATE TABLE 陳述式示範 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 資料欄 (CHAR 資料欄) 中的 Augusta
值,無論輸入字串中是否有任何多餘的空格,一律會傳回 7 個字元的長度。
超過資料欄長度的值
字元字串不會為了配合資料欄宣告的寬度而遭到截斷:
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 個字元會載入資料欄。