**:
最近乙個專案中有個模組需要實現拼音首字母查詢功能,網上查了一下資料,自己重新修改整理了一下,使其滿足專案的要求。
實現過程如下:
1.建立乙個獲取中英文大寫首字母函式:
[html]view plain
copy
drop function if exists `get_first_pinyin_char`;
create function `get_first_pinyin_char`(param varchar(255)) returns varchar(2) charset utf8
begin
declare v_return varchar(255);
declare v_first_char varchar(2);
set v_first_char
= upper
(left(param,1));
set v_return
= v_first_char
; if length( v_first_char) <
>
character_length( v_first_char ) then
set v_return
= elt
(interval(conv(hex(left(convert(param using gbk),1)),16,10),
0xb0a1,0xb0c5,0xb2c1,0xb4ee,0xb6ea,0xb7a2,0xb8c1,0xb9fe,0xbbf7,
0xbfa6,0xc0ac,0xc2e8,0xc4c3,0xc5b6,0xc5be,0xc6da,0xc8bb,
0xc8f6,0xcbfa,0xcdda,0xcef4,0xd1b9,0xd4d1),
'a','b','c','d','e','f','g','h','j','k','l','m','n','o','p','q','r','s','t','w','x','y','z');
end if;
return v_return;
end
2.使用的mysql函式備註:
left(str,length):從左邊開始擷取字串
upper(str):將字串轉為大寫
length(str):計算字串長度,乙個漢字算三個字元,乙個數字或字母算乙個字元
character_length(str):漢字、數字、字母都算乙個字元
convert(expr using encode):不同字符集之間的資料轉換
hex(number or str):將數字或字串轉換為十六進製制
conv(number, from, to):將數字從原來的進製轉換成指定的進製
interval(n,n1,n2,n3,......):將n的值與後面的值列表進行比較。假如n < n1,則返回值為0;假如n < n2 等等,則返回值為1;假如n < n3 等等,則返回值為2;.....以此類推;假如n 為null,則返回值為 -1 。所有的引數均按照整數處理。為了這個函式的正確執行,必須滿足 n1 < n2 < n3 < ……< nn
elt(n,str1,str2,str3,...):若n = 1,則返回值為 str1,若n = 2,則返回值為 str2,以此類推。若n 小於1或大於引數的數目,則返回值為 null。
3.使用樣例:
[sql]view plain
copy
select
name
,get_first_pinyin_char(
name
) from
user
where
get_first_pinyin_char(
name
) =
'w'
顯示結果:
MySQL拼音首字母查詢
在mysql中建立乙個獲取中英文大寫首字母的函式 delimiter create definer function 401 exam get first pinyin char 1 param varchar 255 returns varchar 2 charset utf8 begin dec...
MySQL拼音首字母查詢
最近乙個專案中有模組需要實現拼音首字母查詢功能 實現如下 寫2個函式 第乙個 函式名稱 firstpinyin begin declare v return varchar 255 set v return elt interval conv hex left convert p name usin...
MySql 漢字轉拼音首字母
delimiter use test drop function if exists getpy create definer hjd function getpy in string varchar 21845 returns varchar 21845 charset utf8 begin 擷取...