DB2可用的資料型態介紹文章:
2008年7月11日 星期五
DB2中文問題
哀阿...
昨天才從同事口中得知中文varchar在DB2 UTF-8資料庫中一個中文字有三個bytes怎會如此咧??
OK......
先看看下面:
-- DB
-- codePage =1208 (=x04B8) Unicode - UTF-8
-- codeSet = UTF-8
-- TERRITORY = TW
CREATE DATABASE TESTDB ON c: USING CODESET UTF-8 TERRITORY TW COLLATE USING IDENTITY ;
create table test (field1 varchar(10)); --10 byte
insert into test values('1234567890'); --ok
insert into test values('一二三四五六七八九零'); --err , too long
insert into test values(N'一二三四五六七八九零'); --err, too long
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test --30,10
create table test2 (field2 vargraphic(10) ); --30 byte
insert into test2 values('1234567890'); --ok
insert into test2 values('一二三四五六七890'); --ok
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test2; --30,10
select length(field2) from test2;
select field2,length(field2) AS LEN from test2 --不論中英文,每個字元在string function中長度都是1
select field2,Substr(field2,1,2) from test2 --Graphic也可以用於字串函數
-- 所以varGraphic= MSSQL的nvarchar
-- N'xxxStr' 代表 varGraphic型態
所以說在開table時下的ddl應該使用Graphic和varGraphic型態,
在使用起來會比較順...
至於char和graphic差在哪... 會不會有效能上的考量....
找到資料後再說......
===================================================================
另外幾個與DB2中文處理的相關文章:
昨天才從同事口中得知中文varchar在DB2 UTF-8資料庫中一個中文字有三個bytes怎會如此咧??
OK......
先看看下面:
-- DB
-- codePage =1208 (=x04B8) Unicode - UTF-8
-- codeSet = UTF-8
-- TERRITORY = TW
CREATE DATABASE TESTDB ON c: USING CODESET UTF-8 TERRITORY TW COLLATE USING IDENTITY ;
create table test (field1 varchar(10)); --10 byte
insert into test values('1234567890'); --ok
insert into test values('一二三四五六七八九零'); --err , too long
insert into test values(N'一二三四五六七八九零'); --err, too long
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test --30,10
create table test2 (field2 vargraphic(10) ); --30 byte
insert into test2 values('1234567890'); --ok
insert into test2 values('一二三四五六七890'); --ok
select length('一二三四五六七八九零'),length(N'一二三四五六七八九零') from test2; --30,10
select length(field2) from test2;
select field2,length(field2) AS LEN from test2 --不論中英文,每個字元在string function中長度都是1
select field2,Substr(field2,1,2) from test2 --Graphic也可以用於字串函數
-- 所以varGraphic= MSSQL的nvarchar
-- N'xxxStr' 代表 varGraphic型態
所以說在開table時下的ddl應該使用Graphic和varGraphic型態,
在使用起來會比較順...
至於char和graphic差在哪... 會不會有效能上的考量....
找到資料後再說......
===================================================================
另外幾個與DB2中文處理的相關文章:
2008年7月10日 星期四
2008年6月18日 星期三
2008年6月17日 星期二
2008年6月11日 星期三
[MS SQL , DB2]取得select結果列號 ROW_NUMBER( )
範例:
select ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2 ASC) AS rownumber FROM table
select ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2 ASC) AS rownumber FROM table
2008年5月10日 星期六
DB2 on Windows Vista
艱辛Vista之路......
之前是websphere現在又是DB2, 果然IBM跟MS不愧是百年冤家........
在Vista上的DB2就是無法create database (說我沒啟動database manager,明明就有...)
找了老半天,也懷疑過licence問題, 也使用admin權限跳過UCA, 最新資訊是...
DB2 要v9.1 fix pack 2才支援Vista......
偏偏IBM的網站又非常不人性化, 找個fix pack還真眼花... 倒不如我用google馬上找到.......
好啦 DB2 v9.1的fix pack連結 在此, 花了我這麼多時間載個3百多MB的fix pack, 如果還不行,
那我轉行算了(環境險惡,小弟不才)
----------------------------------------------------------------------------
後記:
感動...小弟不用轉行了...
果然v9.1 FixPack 2 在Vista上正常許多了................
之前是websphere現在又是DB2, 果然IBM跟MS不愧是百年冤家........
在Vista上的DB2就是無法create database (說我沒啟動database manager,明明就有...)
找了老半天,也懷疑過licence問題, 也使用admin權限跳過UCA, 最新資訊是...
DB2 要v9.1 fix pack 2才支援Vista......
偏偏IBM的網站又非常不人性化, 找個fix pack還真眼花... 倒不如我用google馬上找到.......
好啦 DB2 v9.1的fix pack連結 在此, 花了我這麼多時間載個3百多MB的fix pack, 如果還不行,
那我轉行算了(環境險惡,小弟不才)
----------------------------------------------------------------------------
後記:
感動...小弟不用轉行了...
果然v9.1 FixPack 2 在Vista上正常許多了................
DB2使用簡介
除了IBM的官方文檔外, DB2的中文資料真不好找 ,
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。
(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。
(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)
2008年5月9日 星期五
2008年5月6日 星期二
訂閱:
文章 (Atom)