MYSQL 漢字轉拼音首字母 支援複雜字

2021-10-05 14:20:33 字數 2106 閱讀 5009

begin    

declare tmp_str varchar(100) charset gbk default '' ;

declare tmp_char varchar(100) charset gbk default '' ; 

declare v_len int;

declare v_i int;

declare v_py varchar(100);

set v_len=char_length(in_string);

set v_i=1;

set v_py='';

drop temporary table if exists tt_pyzd;

create temporary table tt_pyzd (chr char(2) ,letter char(2)) default charset gbk;

insert into tt_pyzd

select '吖 ', 'a ' union all select '八 ', 'b ' union all 

select '嚓 ', 'c ' union all select '咑 ', 'd ' union all 

select '妸 ', 'e ' union all select '發 ', 'f ' union all 

select '旮 ', 'g ' union all select '鉿 ', 'h ' union all 

select '丌 ', 'j ' union all select '咔 ', 'k ' union all 

select '垃 ', 'l ' union all select '嘸 ', 'm ' union all 

select '拏 ', 'n ' union all select '噢 ', 'o ' union all 

select '妑 ', 'p ' union all select '七 ', 'q ' union all 

select '呥 ', 'r ' union all select '仨 ', 's ' union all 

select '他 ', 't ' union all select '屲 ', 'w ' union all 

select '夕 ', 'x ' union all select '丫 ', 'y ' union all 

select '帀 ', 'z ' ;

while v_i<=v_len do 

set tmp_str = substring(in_string,v_i,1);

if ascii(tmp_str)<127 

then

set tmp_char=upper(tmp_str);

else

select letter into tmp_char from tt_pyzd where chr<=tmp_str order by chr desc limit 1;

end if ;

set v_i=v_i+1;

set v_py=concat(v_py,tmp_char);

end while;

drop temporary table if exists tt_pyzd;

return v_py;

end出現:this function has none of deterministic, no sql, or reads sql data 錯誤

其中在function裡面,只有 deterministic, no sql 和 reads sql data 被支援。如果我們開啟了 bin-log, 我們就必須為我們的function指定乙個引數。

這是我們開啟了bin-log, 我們就必須指定我們的函式是否是

1 deterministic 不確定的

2 no sql 沒有sql語句,當然也不會修改資料

3 reads sql data 只是讀取資料,當然也不會修改資料

4 modifies sql data 要修改資料

5 contains sql 包含了sql語句

在mysql中建立函式時出現這種錯誤的解決方法:

set global log_bin_trust_function_creators=true;

MySql 漢字轉拼音首字母

delimiter use test drop function if exists getpy create definer hjd function getpy in string varchar 21845 returns varchar 21845 charset utf8 begin 擷取...

漢字轉拼音首字母

public string hz2py string hz 獲得漢字的區位碼 else if tmp 45253 tmp 45760 else if tmp 47761 tmp 46317 else if tmp 46318 tmp 46825 else if tmp 46826 tmp 47009...

漢字轉拼音或轉拼音首字母

漢字轉拼音或轉拼音首字母 public class chinesetospell private static string pyname new string 把漢字轉換成拼音 全拼 漢字字串 轉換後的拼音 全拼 字串 public static string characterconvertst...