3月
27
2008
分類:
最近更新:
2008-03-27
BIT and CHAR
BIT 與 CHAR 使用筆記。以 SQL92 為基準。
BIT很少用,前一陣子為了使用這種資料型態,google了不少資料,不過大部份網路資料都沒有提供什麼有用的資訊 (市面上的 SQL 書籍更是不提)。最後還是在各家資料庫系統本身的 Manual 中找到資訊。留下筆記,以供日後查閱。
BIT and BIT VARYING
bit string literal
<bit string literal> ::=
B <quote> [ <bit>... ] <quote>
[ { <separator>... <quote> [ <bit>... ] <quote> }... ]
<hex string literal> ::=
X <quote> [ <hexit>... ] <quote>
[ { <separator>... <quote> [ <hexit>... ] <quote> }... ]
數值 5 的 BIT 字串寫作 B'101'
或 X'5'
。要插入一筆含有 BIT 字串欄位的紀錄時,如下例所示:
CREATE TABLE "myTable" (
"intValue" int,
"bitString" BIT(4),
"normalString" CHAR(1)
);
INSERT INTO "myTable" (
"intValue",
"bitString",
"normalString"
)
VALUES (
5,
X'5',
'5'
);
Cast
The 'Character' value expression can cast to BIT/BIT VARYING.
The 'Exact Numeric' and 'Approximate Numeric' value expression CANNOT cast to BIT/BIT VARYING.
SQL92 6.10 cast specification
-- 下列為正確寫法:
SELECT * FROM "myTable" WHERE "bitString" = CAST('0101' AS BIT(4));
-- 下列為錯誤寫法:
SELECT * FROM "myTable" WHERE "bitString" = CAST(5 AS BIT(4));
PostgreSQL 允許將數值字義轉換成 BIT/BIT VARYING ,故上述的錯誤寫法在 PostgreSQL 中是可用的。
CHAR, CHAR VARYING, VARCHAR
SQL92 要求指定長度。PostgreSQL 允許省略長度。最大長度則依 DBMS 實作細節而定,
The maximum value of <length> is implementation-defined.
(SQL92)。
DBMS | Maximum length |
---|---|
Sybase | 255 |
Oracle | 4000 |
SQL Server | 8000, (NCHAR is 4000) |
DB2 | 32704 |
PostgreSQL | any size |
相關資訊
- ISO/IEC 9075:1992, Database Language SQL- July 30, 1992
- PostgreSQL
- DB2 information
- Oracle® Database SQL Language Reference
樂多舊網址: http://blog.roodo.com/rocksaying/archives/5762925.html