2017-01-30 118 views
0

UTF-8編碼的DB2數據庫中的「CHAR(1)」是什麼意思?DB2 UTF-8編碼:變成CHAR(1)?

我可以在CHAR(1)列中插入一個特殊字符(例如以UTF-8格式存儲2個八位字節的字符)嗎?

或者UTF-8中的CHAR(1)總是表示它具有一個字節/八位字節的容量,即將Umlaut插入它將失敗?

我通過這個有趣的developerWorks文章閱讀,但它會深深爲我的簡單的問題...

回答

4

這要看情況。 :)

DB2引入了code units來幫助設計基於字符數而不是字節數的字符串型列。 CREATE TABLE聲明具有數據類型的概述,並且還解釋了CHARVARCHAR。如果使用字符數,則DB2將假設最差情況 - 每個字符4個字節/字節 - 用於長度計算。

數據庫配置string_units決定是否默認考慮字符數(CODEUNITS32)或字節數(SYSTEM)。

回到您的問題:如果您未指定任何內容,則需要將2個八位字節插入CHAR(1)的特殊字符可能會失敗。如果指定了CODEUNITS32,那麼它將成功。

+0

謝謝!這似乎回答了這個問題。當你介紹這個信息時,你可以添加信息嗎?在文檔代碼單位出現與v10.5.0 ... – Bastl

+0

是的,這是正確的。您可以使用文檔中的下拉菜單切換到其他版本。 'string_units'僅適用於10.5及更高版本。 –

+0

只是出於好奇:以前是如何做到的?將代碼頁固定在CREATE TABLE上,這樣8bit總是足夠的? – Bastl