半角カタカナが読みにくいので、ひらがなに変換するUDFを作ってみました。
濁音、半濁音は2文字になります。
パ => は°
バ => は″
ので、下に置いた変換関数をかますと正しく変換されます。
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_hankana2hira`( `hankana` VARCHAR(200) ) RETURNS varchar(200) CHARSET utf8 LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN DECLARE RESTXT VARCHAR(200) DEFAULT ''; DECLARE CFG_HANKANA VARCHAR(100) DEFAULT ''; DECLARE CFG_HIRA VARCHAR(100) DEFAULT ''; DECLARE LEN_HANKANA SMALLINT DEFAULT 0; DECLARE POS SMALLINT; DECLARE CUR_HANKANA CHAR(1); DECLARE CUR_CFGPOS SMALLINT; DECLARE CUR_HIRA CHAR(1); SET CFG_HANKANA = 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッ゙゚(). -_[]1234567890'; SET CFG_HIRA = CONCAT( 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろ', 'わをんぁぃうぇぉゃゅょっ″°(). -_[]1234567890' ); SET LEN_HANKANA = CHAR_LENGTH(hankana); SET POS = 1; WHILE POS <= LEN_HANKANA DO SET CUR_HANKANA = MID(hankana, POS, 1); SET CUR_CFGPOS = LOCATE(CUR_HANKANA, CFG_HANKANA); SET CUR_HIRA = MID(CFG_HIRA, CUR_CFGPOS, 1); SET RESTXT = CONCAT(RESTXT, CUR_HIRA); SET POS = POS + 1; END WHILE; RETURN fc_hankanazen_dakuon_modify(RESTXT); END
CREATE DEFINER=`root`@`localhost` FUNCTION `fc_hankanazen_dakuon_modify`( `hiraorg` VARCHAR(200) ) RETURNS varchar(200) CHARSET utf8 LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '半角カナから全角ひらがな変換した後の濁音半濁音補正' BEGIN DECLARE RESTXT VARCHAR(200) DEFAULT ''; SET RESTXT = REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( hiraorg, 'か″', 'が'), 'き″', 'ぎ'), 'く″', 'ぐ'), 'け″', 'げ'), 'こ″', 'ご'), 'さ″', 'ざ'), 'し″', 'じ'), 'す″', 'ず'), 'せ″', 'ぜ'), 'そ″', 'ぞ' ); SET RESTXT = REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( RESTXT, 'た″', 'だ'), 'ち″', 'ぢ'), 'つ″', 'づ'), 'て″', 'で'), 'と″', 'ど'), 'は″', 'ば'), 'ひ″', 'び'), 'ふ″', 'ぶ'), 'へ″', 'べ'), 'ほ″', 'ぼ' ); SET RESTXT = REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( RESTXT, 'は°', 'ぱ'), 'ひ°', 'ぴ'), 'ふ°', 'ぷ'), 'へ°', 'ぺ'), 'ほ°', 'ぽ' ); RETURN RESTXT; END
|
|