CREATE FUNCTION kanahan2zen(strhan text) RETURNS text AS $_$DECLARE strHan ALIAS FOR $1; str TEXT; i integer; -- 通常カナ(半角2バイト) --tZen2 VARCHAR[] := ARRAY[ "ガ" ]; tZen2 VARCHAR[] := ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ']; --tHan2 VARCHAR[] := ARRAY[ "ガ" ]; tHan2 VARCHAR[] := ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ']; BEGIN str := strHan; -- 半角2バイトの変換 for i in 1..26 loop str := replace(str, tHan2[i], tZen2[i]); end loop; -- 半角1バイトの変換 str := translate(upper(str) , 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョワイエカケー、。・」「゙ ,<.>/?_}]*:+;{[~@|\`^=-)(&%$#""!' , 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヮヰヱヵヶー、。・」「゛ ,<.>/?_}]*:+;{[ ̄@|¥`^=-)(&%$#”!'); return str; END; $_$ LANGUAGE plpgsql; -- -- TOC entry 26 (class 1255 OID 18986) -- Dependencies: 5 590 -- Name: kanazen2han(text); Type: FUNCTION; Schema: public; Owner: postgres -- CREATE FUNCTION kanazen2han(strzen text) RETURNS text AS $_$DECLARE strZen ALIAS FOR $1; str TEXT; i integer; -- 通常カナ(半角2バイト) --tZen2 VARCHAR[] := ARRAY[ "ガ" ]; tZen2 VARCHAR[] := ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ']; --tHan2 VARCHAR[] := ARRAY[ "ガ" ]; tHan2 VARCHAR[] := ARRAY['ガ', 'ギ', 'グ', 'ゲ', 'ゴ', 'ザ', 'ジ', 'ズ', 'ゼ', 'ゾ', 'ダ', 'ヂ', 'ヅ', 'デ', 'ド', 'バ', 'ビ', 'ブ', 'ベ', 'ボ', 'パ', 'ピ', 'プ', 'ペ', 'ポ', 'ヴ']; BEGIN str := strZen; -- 半角2バイトの変換 for i in 1..26 loop str := replace(str, tZen2[i], tHan2[i]); end loop; -- 半角1バイトの変換 str := translate(upper(str) , 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヮヰヱヵヶー、。・」「゛ ,<.>/?_}]*:+;{[ ̄@|¥`^=-)(&%$#”!' , 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョワイエカケー、。・」「゙ ,<.>/?_}]*:+;{[~@|\`^=-)(&%$#""!'); return str; END; $_$ LANGUAGE plpgsql;
2017年2月15日水曜日
plpgsql 全角半角変換
そういえば、こういうの書いたなーと思って…
PostgreSQL で、全角と半角の変換を行うストアドプロシジャです。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿