程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2中創建一個漢字拼音首字母的SQL函數

DB2中創建一個漢字拼音首字母的SQL函數

編輯:DB2教程

可以看到從B0A0-1 開始,至B0C0-5,是拼音A開頭的漢字,恰好是按照拼音字母的先後順序排列,並且把音調的因素也考慮進去了,由此,可以推斷出,數據庫在GBk編碼的數據庫中對漢字進行排序,即是依照字符內碼表的編碼進行的。

我們把B0C0-5 位置的漢字記錄下來,即“澳”字,這是以“a”拼音開頭在內碼表中排列在最後的漢字,用同樣的方法,我們找出所有以拼音從b至z開頭,在內碼表中排列在最後的漢字,與26個字母的對應關系如下:

'澳' a
'怖' b
'錯' c
'墮' d
'貳' e
'咐' f
'過' g
'禍' h
i
'駿' j
'闊' k
'絡' l
'穆' m
'諾' n
'漚' o
'瀑' p
'群' q
'弱' r
'所' s
'唾' t
u
v
'誤' w
'迅' x
'孕' y
'座 z

注:沒有以'i','u','v'開頭的漢語拼音。

現在假若我們拿出任何一個漢字,放在我們挑選出的這些漢字中間,利用數據庫進行一次使用GBK字符集的排序,我們便能夠根據這個漢字排列的相對位置得到其拼音首字母。

利用sql語句生成一組上述漢字的結果集,我們將'i','u','v' 三個空缺漢字的位置補上了上一個拼音的漢字,

select t1.strChn
from ( select '澳' strChn from sysibm.sysdummy1
union all
select '怖' strChn from sysibm.sysdummy1
union all
select '錯' strChn from sysibm.sysdummy1
union all
select '墮' strChn from sysibm.sysdummy1
union all
select '貳' strChn from sysibm.sysdummy1
union all
select '咐' strChn from sysibm.sysdummy1
union all
select '過' strChn from sysibm.sysdummy1
union all
select '禍' strChn from sysibm.sysdummy1
union all
select '禍' strChn from sysibm.sysdummy1
union all
select '駿' strChn from sysibm.sysdummy1
union all
select '闊' strChn from sysibm.sysdummy1
union all
select '絡' strChn from sysibm.sysdummy1
union all
select '穆' strChn from sysibm.sysdummy1
union all
select '諾' strChn from sysibm.sysdummy1
union all
select '漚' strChn from sysibm.sysdummy1
union all
select '瀑' strChn from sysibm.sysdummy1
union all
select '群' strChn from sysibm.sysdummy1
union all
select '弱' strChn from sysibm.sysdummy1
union all
select '所' strChn from sysibm.sysdummy1
union all
select '唾' strChn from sysibm.sysdummy1
union all
select '唾' strChn from sysibm.sysdummy1
union all
select '唾' strChn from sysibm.sysdummy1
union all
select '誤' strChn from sysibm.sysdummy1
union all
select '迅' strChn from sysibm.sysdummy1
union all
select '孕' strChn from sysibm.sysdummy1
union all
select '座' strChn from sysibm.sysdummy1
) as t1

實現

接下來很方便的就可以寫出這個函數的具體實現,在實現的代碼中,我們又加入了針對英文字母的處理,函數編譯後,可通過如下方式調用:

select getIndex( '索' ) index from dual;
index
------
f

實際使用中,應注意建立數據庫時字符集參數的設置,應使用GBK字符集。

應用以下命令查看已建立數據庫的字符集:

db2 connect to db_name user user_name using passWord
db2 get db cfg | grep -i 'code set'

此參數在數據庫建立之後不能修改。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved