mysql 取首字母_MySQL中获取拼音首字母的方法
前些天遇到獲取標題首字母的問題,數據庫數據很多一條條改太費勁了,網上查了下,果然有高人,分享下。
在 mysql 命令窗口中 :
新建數據表,
DROP TABLE IF EXISTS `pinyin`;
CREATE TABLE `pinyin` (
`letter` char(1) NOT NULL,
`chinese` char(1) NOT NULL,
PRIMARY KEY? (`letter`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk;
插入數據
INSERT INTO `pinyin` VALUES
('A','驁'),
('B','簿'),
('C','錯'),
('D','鵽'),
('E','樲'),
('F','鰒'),
('G','腂'),
('H','夻'),
('J','攈'),
('K','穒'),
('L','鱳'),
('M','旀'),
('N','桛'),
('O','漚'),
('P','曝'),
('Q','囕'),
('R','鶸'),
('S','蜶'),
('T','籜'),
('W','鶩'),
('X','鑂'),
('Y','韻'),
('Z','咗');
仍在mysql命令窗口中執行
DELIMITER $$
DROP FUNCTION IF EXISTS `PINYIN`$$
CREATE FUNCTION `PINYIN`(str CHAR(255)) RETURNS char(255)
BEGIN
DECLARE hexCode char(4);
DECLARE pinyin varchar(255);
DECLARE firstChar char(1);
DECLARE aChar char(1);
DECLARE pos int;
DECLARE strLength int;
SET pinyin??? = '';
SET strLength = CHAR_LENGTH(LTRIM(RTRIM(str)));
SET pos?????? = 1;
SET @str????? = (CONVERT(str USING gbk));
WHILE pos <= strLength DO
SET @aChar = SUBSTRING(@str,pos,1);
SET hexCode = HEX(@aChar);
IF hexCode >= "8140" AND hexCode <= "FEA0" THEN
SELECT letter into firstChar
FROM?? pinyin
WHERE? chinese >= @aChar
LIMIT? 1;
ELSE
SET firstChar = @aChar;
END IF;
SET pinyin = CONCAT(pinyin,firstChar);
SET pos = pos + 1;
END WHILE;
RETURN UPPER(pinyin);
END$$
DELIMITER ;
操作前請備份數據庫
使用方法:SELECT pinyin('獲取漢字拼音首字母');
結果為 hqhzpyszm
或者直接執行 update ‘表’ set ‘字段名’ = pinyin('字段名');
如果發現有亂碼:
修改 my.ini 文件
default-character-set=gbk
共有兩處。。
然后修改mysql data目錄下的相應數據庫的db.opt配置文件
default-character-set=gbk
default-collation=gbk_chinese_ci
重啟mysql后 查詢測試,如果還是亂碼,將上方命令重新執行下。
總結
以上是生活随笔為你收集整理的mysql 取首字母_MySQL中获取拼音首字母的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [python] list元素按关键字相
- 下一篇: mysql 汉字拼音怎么获得_mysql