mysql 翻譯函式 Mysql翻譯拼音

2021-10-18 08:28:56 字數 2549 閱讀 1593

ps:這個似乎在翻譯多音字的時候會有漏洞,不過不會很嚴重

in_string varchar(21000)

mediumtext

begin

declare tmp_str varchar(21000) charset gbk default '' ; #擷取字串,每次做擷取後的字串存放在該變數中,初始為函式引數in_string值

declare tmp_len smallint default 0;#tmp_str的長度

declare tmp_char varchar(2) charset gbk default '';#擷取字元,每次 left(tmp_str,1) 返回值存放在該變數中

declare tmp_rs varchar(21000) charset gbk default '';#結果字串

declare tmp_cc varchar(2) charset gbk default '';#拼音字元,存放單個漢字對應的拼音首字元

set tmp_str = in_string;#初始化,將in_string賦給tmp_str

set tmp_len = length(tmp_str);#初始化長度

while tmp_len > 0 do #如果被計算的tmp_str長度大於0則進入該while

set tmp_char = left(tmp_str,1);#獲取tmp_str最左端的首個字元,注意這裡是獲取首個字元,該字元可能是漢字,也可能不是。

set tmp_cc = tmp_char;#左端首個字元賦值給拼音字元

if length(tmp_char)>1 then#判斷左端首個字元是多位元組還是單位元組字元,要是多位元組則認為是漢字且作以下拼音獲取,要是單位元組則不處理。

select elt(interval(conv(hex(tmp_char),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') into tmp_cc; #獲得漢字拼音首字元

end if;

set tmp_rs = concat(tmp_rs,tmp_cc);#將當前tmp_str左端首個字元拼音首字元與返回字串拼接

set tmp_str = substring(tmp_str,2);#將tmp_str左端首字元去除

set tmp_len = length(tmp_str);#計算當前字串長度

end while;

return tmp_rs;#返回結果字串

endto_pinyin

name varchar(255) charset gbk

begin

declare mycode int;

declare tmp_lcode varchar(2) charset gbk;

declare lcode int;

declare tmp_rcode varchar(2) charset gbk;

declare rcode int;

declare mypy varchar(255) charset gbk default '';

declare lp int;

set mycode = 0;

set lp = 1;

set name = hex(name);

while lp < length(name) do

set tmp_lcode = substring(name, lp, 2);

set lcode = cast(ascii(unhex(tmp_lcode)) as unsigned);

set tmp_rcode = substring(name, lp + 2, 2);

set rcode = cast(ascii(unhex(tmp_rcode)) as unsigned);

if lcode > 128 then

set mycode =65536 - lcode * 256 - rcode ;

select concat(mypy,pin_yin_) into mypy from t_base_pinyin where code_ >= abs(mycode) order by code_ asc limit 1;

set lp = lp + 4;

else

set mypy = concat(mypy,char(cast(ascii(unhex(substring(name, lp, 2))) as unsigned)));

set lp = lp + 2;

end if;

end while;

return lower(mypy);

end

python有道翻譯 Python版有道翻譯

做過爬蟲的朋友應該很通俗易懂,話不多說 亮 吧。需要用到的模組 urllib time hashlib random json code encoding utf 8 author search plugname youdaodict import urllib.request import url...

mysql 奇數函式 MySQL常用函式

mysql運算子 比較運算子的結果是1 true 0 false 或null。這些函式可用於數字或者字串。expr between min and max 如果expr大於或者等於min,並且小於等於max,返回1,否則返回0。它等價於表示式 expr min and expr max expr i...

mysql 等待函式 mysql 內建函式

select convert 125.83 signed select cast 125.83 as signed 字串函式 檢視字元的ascii碼值ascii str str是空串時返回0 select ascii a 檢視ascii碼值對應的字元char 數字 select char 97 拼接...