住所の登録システムを作っているときにたまに要件で出てくる表記揺れ。
ひらがなは全て半角カタカナに変換したり、
括弧も全て()に変換したりします。
Oracle10gからの機能であるUTL_I18NパッケージのTRANSLITERATEファンクションを利用します。
下記に例を示しておきます。
テキトーな仕様 全角英数字:全て半角英数字に変換 全角ひらがな、カタカナ:全て半角カタカナに変換 前後の中間の空白:全角、半角問わず削除 全角半角の括弧{}、「」、<>、():全て()に変換 全角記号:半角記号に変換 全角半角のハイフン:全て-に変換
1 | CREATE OR REPLACE FUNCTION CONVERSION_TEST( |
2 | IN_CHAR VARCHAR |
3 | ) RETURN VARCHAR |
4 | IS |
5 | BEGIN |
6 | RETURN |
7 | UTL_I18N.TRANSLITERATE( |
8 | TRANSLATE( |
9 | UPPER (TO_SINGLE_BYTE( REPLACE ( REPLACE (IN_CHAR, ' ' ), ' ' ))) |
10 | , '{}「」<>()ー-!#$%' |
11 | , '()()()()--!#$%' |
12 | ) |
13 | , 'kana_hwkatakana' ) |
14 | ; |
15 | END CONVERSION_TEST; |
記号、括弧、ハイフンは全部書くとキリないので、省略しています。
「kana_hwkatakana」の部分は他にも色々あるようです。