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中文處理的相關文章:

2008年6月18日 星期三

DB2 function: Null轉特定值 COALESCE

COALESCE 函數功能和ORACLE的NVL函數一樣,可將null值轉為特定預設值:
範例:
select coalesce(field,'noVal') from table

2008年6月17日 星期二

DB2的SQL Select command中使用CASE WHEN... THEN (IF...Then....Else)

範例:

SELECT
(
CASE WHEN (field1 = 'A') THEN 'ADD'
WHEN (field1 = 'D') THEN 'DEL'
ELSE 'Error'
END
) AS codeName
FROM codeMapping

2008年6月11日 星期三

[MS SQL , DB2]取得select結果列號 ROW_NUMBER( )

範例:
select ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2 ASC) AS rownumber FROM table

2008年5月10日 星期六

一些DB2文章

一些DB2文章,簡體的

DB2 V9 常用SQL整理

DB2 V9 常用SQL整理

關於DB2的權限

關於DB2的權限, 這篇文章淺顯易懂

instance level: ( on DBM CFG )
SYSADM
SYSCTRL
SYSMAINT

database level:
DBADM
LOAD

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上正常許多了................

DB2 DB2

DB2 DB2....
搞了我一天 都 快吐了.........

DB2 8.1文件

網路上找來的:
DB2 HOW TOs
http://users.sdsc.edu/~jrowley/db2/index.html

DB2使用簡介

除了IBM的官方文檔外, DB2的中文資料真不好找 ,
最近市面上有出了一本「愛上DB2資料庫管理與應用(第二版)」就似乎找不到其他中文書了,
這邊有中研院計算機中心的兩篇電子報文章簡介DB2,雖然是很久前的文章,
但還是可參考看看。

(作者:吳和弟)
DB2使用簡介(上)
DB2使用簡介(下)