DB2中建立漢字拼音首字母的SQL函式
需求
有些時候我們會有這樣的需求,要求使用字母從a至z對一組資料進行索引,如果資料的格式全部是半形的英文則很容易實現,但若是對一組中文資料進行索引則會引起一點小的麻煩,資料在錄入db2資料庫的時候可能並沒有指定一個索引字母,這就要求應用程式可以自動生成用於索引的資訊。
一般對於中文資料的索引,採用片語的首漢字拼音的首字母,例如:
片語 索引字母 |
在DB2中並沒有提供相應的函式可以取得漢字拼音的首字母,我們可以利用資料庫針對中文字符集的排序功能建立一個這樣的函式。
工作原理
我們知道在使用中文字符集的資料庫中,當你對一列中文資料使用order by 排序時,排序的結果正是按照每行記錄第一個漢字的拼音首字母進行排列的,那麼我們需要想辦法取得這個字母。
但是資料庫內部是如何做到這一點的呢?以中文字符集GBK為例,讓我們檢視一下GBK字符集的內碼錶,我們僅摘出一段:
0 1 2 3 4 5 6 7 8 9 A B C D E F |
可以看到從B0A0-1 開始,至B0C0-5,是拼音A開頭的漢字,恰好是按照拼音字母的先後順序排列,並且把音調的因素也考慮進去了,由此,可以推斷出,資料庫在GBk編碼的資料庫中對漢字進行排序,即是依照字元內碼錶的編碼進行的。
我們把B0C0-5 位置的漢字記錄下來,即“澳”字,這是以“a”拼音開頭在內碼錶中排列在最後的漢字,用同樣的方法,我們找出所有以拼音從b至z開頭,在內碼錶中排列在最後的漢字,與26個字母的對應關係如下:
'澳' a |
注:沒有以'i','u','v'開頭的漢語拼音。
現在假若我們拿出任何一個漢字,放在我們挑選出的這些漢字中間,利用資料庫進行一次使用GBK字符集的排序,我們便能夠根據這個漢字排列的相對位置得到其拼音首字母。
利用sql語句生成一組上述漢字的結果集,我們將'i','u','v' 三個空缺漢字的位置補上了上一個拼音的漢字,
select t1.strChn t1 |
實現
接下來很方便的就可以寫出這個函式的具體實現,在實現的程式碼中,我們又加入了針對英文字母的處理,函式編譯後,可通過如下方式呼叫:
select getIndex( '索' ) index from dual; |
實際使用中,應注意建立資料庫時字符集引數的設定,應使用GBK字符集。
應用以下命令檢視已建立資料庫的字符集:
DB2 connect to db_name user user_name using passWord |
此引數在資料庫建立之後不能修改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-618201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 取漢字的拼音首字母的SQL函式SQL函式
- ORACLE SQL函式中文漢字轉拼音首字母OracleSQL函式
- [轉]SQL獲取漢字拼音首字母函式SQL函式
- oralce中漢字轉為拼音首字母的函式(轉)函式
- php獲取漢字的拼音 拼音首字母PHP
- 在Excel中如何獲取漢字拼音首字母?Excel
- 在vc中實現獲取漢字拼音的首字母
- 漢字轉拼音pl/sqlSQL
- C#中取得漢語拼音首字母C#
- Sql Server資料庫漢字按字母、筆劃、拼音首字母、排序SQLServer資料庫排序
- 簡單方法在C#中取得漢字的拼音的首字母(轉)C#
- 取漢字全拼的SQL函式SQL函式
- C# 漢字轉拼音 使用微軟的Visual Studio International Pack 類庫提取漢字拼音首字母C#微軟
- C#中漢字轉拼音C#
- 摘抄Excel和FoxPro獲取漢字拼音首字母縮寫的方法.Excel
- C#漢字轉漢語拼音C#
- mysql 中如何取得漢字欄位的各漢字首字母MySql
- iOS漢字轉拼音的方法iOS
- 如何獲取漢字拼音首字母?一般用於通訊錄
- JS 漢字轉換拼音JS
- 小談漢字轉換成拼音輔助函式和輔助類函式
- python返回漢字的首字母Python
- mysql獲取漢字的首字母MySql
- java獲取漢字的首字母Java
- C#漢字拼音檢索C#
- js 漢字按照拼音排序效果JS排序
- 漢字之美,拼音之韻
- element-ui中el-select下拉框實現拼音、首字母、漢字等模糊搜尋UI
- Python 漢字轉拼音的庫--- PyPinyinPython
- JavaScript按照漢字拼音順序排序JavaScript排序
- js漢字轉換為拼音功能JS
- JavaPinyin4j(漢字轉拼音)JavaAPI
- php 漢字轉換成拼音 程式PHP
- xpinyin:漢字轉換為拼音庫
- js 漢字陣列按拼音排序JS陣列排序
- SQLSERVER中實現返回漢字筆畫數的函式;SQLServer函式
- 修改後的取得漢字首字母的lazarus函式,可以自己增加疑難漢字,這個應該比較理想了函式
- java將漢字改成對應首字母Java