半角カタカナが読みにくいので、ひらがなに変換する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
コメントを投稿するにはログインしてください。