DB2中獲取漢字的長度

2021-06-18 16:00:47 字數 1222 閱讀 7251

參考:

db2 9 中基於字元的字串函式

db2 9 for linux, unix, and windows 的字串單元分別為 octets、codeunits16 和 codeunits32。

對於單位元組字元編碼模式,乙個位元組組成乙個字元,單位元組字串的長度與字串的位元組長度相同。對於圖形字串,兩個位元組組成乙個字元,使用雙位元組數來表示字串的長度。但是對於多位元組編碼,字元的位元組長度隨使用編碼模式的不同而不同,每個字元的長度可能是乙個位元組或多個位元組。

乙個漢字在db2中佔3個位元組

values length('我')

---------------------

3

字串函式擁有數值規範,或者說結果是輸入資料相關的數值。字串長度單元屬於數值。待執行的字串操作可能導致不同的輸出,取決於計算字元所使用的字串長度單元。一些函式的輸入是數值,比如字串函式的起始、長度和偏移量引數。而其他一些函式的返回結果是數值,比如搜尋字串中指定的子字串的出現位置,首先執行搜尋然後結果返回為字串長度單元中隱式或顯式指定的數字。

使用 octets 作為字串長度單元時,通過簡單地計算字串的位元組數即可確定字串的長度。codeunits16 指定將 unicode utf-16 用於字元語義。同樣,codeunits32 指定使用 unicode utf-32 來理解多位元組字元的字元邊界。

如果使用 codeunits 來獲取字元的長度,則用作字串函式輸入的 codeunits 引數的不同會導致輸出的不同。

--計算漢字的長度

values length('我',octets)

-----------------------

3values length('我',codeunits16)

-----------------------

1values length('我',codeunits32)

-----------------------

1

---求漢字的子字串

--子字串『中國』

values substring('我愛你中國',4,2,codeunits16),從第四個漢字開始,往後去三個漢字。

--------------------

中國

還有字元處理函式:substr,locate。

db2漢字儲存

url 大家可能都知道,資料庫的varchar欄位在儲存中文時,字段最大長度和可以儲存的字元的最大數量可能是不相等的。在oracle中,varchar 100 可以儲存50個純漢字或100個純字母或者數字。如果希望長度100的varchar儲存100個漢字,可以將字段型別設定為nvarchar 這個...

DB2中db2命令引數說明

db2中db2命令引數說明 a 顯示 sqlca off c 自動落實 on d 檢索並顯示 xml 宣告 off e 顯示 sqlcode sqlstate off f 讀取輸入檔案 off i 顯示 xml 資料並帶有縮排 off l 將命令記錄到歷史記錄檔案中 off m 顯示受影響的行數 o...

DB2查詢獲取排序號

相信大家都會有這樣的需求,即對一張表進行排序查詢的同時獲取排序號。那麼在使用mysql資料庫時,我們通常通過變數來實現,或者客戶端 裡進行fetch迴圈 1操作。而在db2資料庫裡,直接提供了獲取行號的sql語法,一條簡單的sql語句就能實現這個需求。接下來的測試用例如下 create table ...