前言:
今天有個業務需求,需要將用戶的密碼統一進行設定,現在只有用戶的昵稱(nickname),
用戶的username跟password欄位為空,遂就用到了中文轉拼音~
1、先將nickname轉拼音并賦值給username欄位
2、使用username欄位配合加密函式,對該用戶的密碼進行賦值
-- 加密-按照用戶名進行加密
select HEX(AES_ENCRYPT('123456','admin'))
-- 解密-按照用戶名進行解密
SELECT AES_DECRYPT(UNHEX("F8833383029D93ACBD66F6C8D81602DD"),'admin')
一、創建拼音對照表
-- 創建漢字拼音對照臨時表 CREATE TABLE IF NOT EXISTS `t_base_pinyin` ( `pin_yin_` varchar(255) CHARACTER SET gbk NOT NULL, `code_` int(11) NOT NULL, PRIMARY KEY (`code_`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
二、插入對照資料
-- 插入資料 INSERT INTO t_base_pinyin ( pin_yin_, code_ ) VALUES ( "a", 20319 ),( "ai", 20317 ),( "an", 20304 ),( "ang", 20295 ),( "ao", 20292 ),( "ba", 20283 ),( "bai", 20265 ),( "ban", 20257 ),( "bang", 20242 ),( "bao", 20230 ),( "bei", 20051 ),( "ben", 20036 ),( "beng", 20032 ),( "bi", 20026 ),( "bian", 20002 ),( "biao", 19990 ),( "bie", 19986 ),( "bin", 19982 ),( "bing", 19976 ),( "bo", 19805 ),( "bu", 19784 ),( "ca", 19775 ),( "cai", 19774 ),( "can", 19763 ),( "cang", 19756 ),( "cao", 19751 ),( "ce", 19746 ),( "ceng", 19741 ),( "cha", 19739 ),( "chai", 19728 ),( "chan", 19725 ),( "chang", 19715 ),( "chao", 19540 ),( "che", 19531 ),( "chen", 19525 ),( "cheng", 19515 ),( "chi", 19500 ),( "chong", 19484 ),( "chou", 19479 ),( "chu", 19467 ),( "chuai", 19289 ),( "chuan", 19288 ),( "chuang", 19281 ),( "chui", 19275 ),( "chun", 19270 ),( "chuo", 19263 ),( "ci", 19261 ),( "cong", 19249 ),( "cou", 19243 ),( "cu", 19242 ),( "cuan", 19238 ),( "cui", 19235 ),( "cun", 19227 ),( "cuo", 19224 ),( "da", 19218 ),( "dai", 19212 ),( "dan", 19038 ),( "dang", 19023 ),( "dao", 19018 ),( "de", 19006 ),( "deng", 19003 ),( "di", 18996 ),( "dian", 18977 ),( "diao", 18961 ),( "die", 18952 ),( "ding", 18783 ),( "diu", 18774 ),( "dong", 18773 ),( "dou", 18763 ),( "du", 18756 ),( "duan", 18741 ),( "dui", 18735 ),( "dun", 18731 ),( "duo", 18722 ),( "e", 18710 ),( "en", 18697 ),( "er", 18696 ),( "fa", 18526 ),( "fan", 18518 ),( "fang", 18501 ),( "fei", 18490 ),( "fen", 18478 ),( "feng", 18463 ),( "fo", 18448 ),( "fou", 18447 ),( "fu", 18446 ),( "ga", 18239 ),( "gai", 18237 ),( "gan", 18231 ),( "gang", 18220 ),( "gao", 18211 ),( "ge", 18201 ),( "gei", 18184 ),( "gen", 18183 ),( "geng", 18181 ),( "gong", 18012 ),( "gou", 17997 ),( "gu", 17988 ),( "gua", 17970 ),( "guai", 17964 ),( "guan", 17961 ),( "guang", 17950 ),( "gui", 17947 ),( "gun", 17931 ),( "guo", 17928 ),( "ha", 17922 ),( "hai", 17759 ),( "han", 17752 ),( "hang", 17733 ),( "hao", 17730 ),( "he", 17721 ),( "hei", 17703 ),( "hen", 17701 ),( "heng", 17697 ),( "hong", 17692 ),( "hou", 17683 ),( "hu", 17676 ),( "hua", 17496 ),( "huai", 17487 ),( "huan", 17482 ),( "huang", 17468 ),( "hui", 17454 ),( "hun", 17433 ),( "huo", 17427 ),( "ji", 17417 ),( "jia", 17202 ),( "jian", 17185 ),( "jiang", 16983 ),( "jiao", 16970 ),( "jie", 16942 ),( "jin", 16915 ),( "jing", 16733 ),( "jiong", 16708 ),( "jiu", 16706 ),( "ju", 16689 ),( "juan", 16664 ),( "jue", 16657 ),( "jun", 16647 ),( "ka", 16474 ),( "kai", 16470 ),( "kan", 16465 ),( "kang", 16459 ),( "kao", 16452 ),( "ke", 16448 ),( "ken", 16433 ),( "keng", 16429 ),( "kong", 16427 ),( "kou", 16423 ),( "ku", 16419 ),( "kua", 16412 ),( "kuai", 16407 ),( "kuan", 16403 ),( "kuang", 16401 ),( "kui", 16393 ),( "kun", 16220 ),( "kuo", 16216 ),( "la", 16212 ),( "lai", 16205 ),( "lan", 16202 ),( "lang", 16187 ),( "lao", 16180 ),( "le", 16171 ),( "lei", 16169 ),( "leng", 16158 ),( "li", 16155 ),( "lia", 15959 ),( "lian", 15958 ),( "liang", 15944 ),( "liao", 15933 ),( "lie", 15920 ),( "lin", 15915 ),( "ling", 15903 ),( "liu", 15889 ),( "long", 15878 ),( "lou", 15707 ),( "lu", 15701 ),( "lv", 15681 ),( "luan", 15667 ),( "lue", 15661 ),( "lun", 15659 ),( "luo", 15652 ),( "ma", 15640 ),( "mai", 15631 ),( "man", 15625 ),( "mang", 15454 ),( "mao", 15448 ),( "me", 15436 ),( "mei", 15435 ),( "men", 15419 ),( "meng", 15416 ),( "mi", 15408 ),( "mian", 15394 ),( "miao", 15385 ),( "mie", 15377 ),( "min", 15375 ),( "ming", 15369 ),( "miu", 15363 ),( "mo", 15362 ),( "mou", 15183 ),( "mu", 15180 ),( "na", 15165 ),( "nai", 15158 ),( "nan", 15153 ),( "nang", 15150 ),( "nao", 15149 ),( "ne", 15144 ),( "nei", 15143 ),( "nen", 15141 ),( "neng", 15140 ),( "ni", 15139 ),( "nian", 15128 ),( "niang", 15121 ),( "niao", 15119 ),( "nie", 15117 ),( "nin", 15110 ),( "ning", 15109 ),( "niu", 14941 ),( "nong", 14937 ),( "nu", 14933 ),( "nv", 14930 ),( "nuan", 14929 ),( "nue", 14928 ),( "nuo", 14926 ),( "o", 14922 ),( "ou", 14921 ),( "pa", 14914 ),( "pai", 14908 ),( "pan", 14902 ),( "pang", 14894 ),( "pao", 14889 ),( "pei", 14882 ),( "pen", 14873 ),( "peng", 14871 ),( "pi", 14857 ),( "pian", 14678 ),( "piao", 14674 ),( "pie", 14670 ),( "pin", 14668 ),( "ping", 14663 ),( "po", 14654 ),( "pu", 14645 ),( "qi", 14630 ),( "qia", 14594 ),( "qian", 14429 ),( "qiang", 14407 ),( "qiao", 14399 ),( "qie", 14384 ),( "qin", 14379 ),( "qing", 14368 ),( "qiong", 14355 ),( "qiu", 14353 ),( "qu", 14345 ),( "quan", 14170 ),( "que", 14159 ),( "qun", 14151 ),( "ran", 14149 ),( "rang", 14145 ),( "rao", 14140 ),( "re", 14137 ),( "ren", 14135 ),( "reng", 14125 ),( "ri", 14123 ),( "rong", 14122 ),( "rou", 14112 ),( "ru", 14109 ),( "ruan", 14099 ),( "rui", 14097 ),( "run", 14094 ),( "ruo", 14092 ),( "sa", 14090 ),( "sai", 14087 ),( "san", 14083 ),( "sang", 13917 ),( "sao", 13914 ),( "se", 13910 ),( "sen", 13907 ),( "seng", 13906 ),( "sha", 13905 ),( "shai", 13896 ),( "shan", 13894 ),( "shang", 13878 ),( "shao", 13870 ),( "she", 13859 ),( "shen", 13847 ),( "sheng", 13831 ),( "shi", 13658 ),( "shou", 13611 ),( "shu", 13601 ),( "shua", 13406 ),( "shuai", 13404 ),( "shuan", 13400 ),( "shuang", 13398 ),( "shui", 13395 ),( "shun", 13391 ),( "shuo", 13387 ),( "si", 13383 ),( "song", 13367 ),( "sou", 13359 ),( "su", 13356 ),( "suan", 13343 ),( "sui", 13340 ),( "sun", 13329 ),( "suo", 13326 ),( "ta", 13318 ),( "tai", 13147 ),( "tan", 13138 ),( "tang", 13120 ),( "tao", 13107 ),( "te", 13096 ),( "teng", 13095 ),( "ti", 13091 ),( "tian", 13076 ),( "tiao", 13068 ),( "tie", 13063 ),( "ting", 13060 ),( "tong", 12888 ),( "tou", 12875 ),( "tu", 12871 ),( "tuan", 12860 ),( "tui", 12858 ),( "tun", 12852 ),( "tuo", 12849 ),( "wa", 12838 ),( "wai", 12831 ),( "wan", 12829 ),( "wang", 12812 ),( "wei", 12802 ),( "wen", 12607 ),( "weng", 12597 ),( "wo", 12594 ),( "wu", 12585 ),( "xi", 12556 ),( "xia", 12359 ),( "xian", 12346 ),( "xiang", 12320 ),( "xiao", 12300 ),( "xie", 12120 ),( "xin", 12099 ),( "xing", 12089 ),( "xiong", 12074 ),( "xiu", 12067 ),( "xu", 12058 ),( "xuan", 12039 ),( "xue", 11867 ),( "xun", 11861 ),( "ya", 11847 ),( "yan", 11831 ),( "yang", 11798 ),( "yao", 11781 ),( "ye", 11604 ),( "yi", 11589 ),( "yin", 11536 ),( "ying", 11358 ),( "yo", 11340 ),( "yong", 11339 ),( "you", 11324 ),( "yu", 11303 ),( "yuan", 11097 ),( "yue", 11077 ),( "yun", 11067 ),( "za", 11055 ),( "zai", 11052 ),( "zan", 11045 ),( "zang", 11041 ),( "zao", 11038 ),( "ze", 11024 ),( "zei", 11020 ),( "zen", 11019 ),( "zeng", 11018 ),( "zha", 11014 ),( "zhai", 10838 ),( "zhan", 10832 ),( "zhang", 10815 ),( "zhao", 10800 ),( "zhe", 10790 ),( "zhen", 10780 ),( "zheng", 10764 ),( "zhi", 10587 ),( "zhong", 10544 ),( "zhou", 10533 ),( "zhu", 10519 ),( "zhua", 10331 ),( "zhuai", 10329 ),( "zhuan", 10328 ),( "zhuang", 10322 ),( "zhui", 10315 ),( "zhun", 10309 ),( "zhuo", 10307 ),( "zi", 10296 ),( "zong", 10281 ),( "zou", 10274 ),( "zu", 10270 ),( "zuan", 10262 ),( "zui", 10260 ),( "zun", 10256 ),( "zuo", 10254 );View Code
三、創建漢字轉換拼音函式
-- 建立漢字轉換拼音函式 DROP FUNCTION IF EXISTS to_pinyin; DELIMITER $ CREATE FUNCTION to_pinyin(NAME VARCHAR(255) CHARSET gbk) RETURNS 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; $ DELIMITER ;
如果出現錯誤:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de
執行下面SQL,然后重新執行函式即可:
set global log_bin_trust_function_creators=TRUE;
四、使用方法
select to_pinyin('測驗')

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/501409.html
標籤:MySQL
