PostgreSQL ひらがなからカタカナへ置換
CREATE FUNCTIONによるカタカナ置換関数を定義
ひらがなをカタカナに置換する関数を定義。
lowerやupperのようにひらがなをカタカナに置換。
SQL
CREATE OR REPLACE FUNCTION to_kana(text) RETURNS text AS $$
BEGIN RETURN translate(
$1,
'ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゕゖ',
'ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヵヶ'
);
END;
$$ LANGUAGE 'plpgsql';
pgdb=# \df
関数一覧
スキーマ | 名前 | 結果のデータ型 | 引数のデータ型 | 型
----------+---------+----------------+----------------+----------------
public | to_kana | text | text | normal(通常)
(1 行)
ぁ~ゖの並びは文字コード表 ひらがな、カタカナを参照。
pgdb=# SELECT foo_name FROM foo;
foo_name
----------
りんご
ばなな
(2 行)
pgdb=# SELECT to_kana(foo_name) FROM foo;
to_kana
---------
リンゴ
バナナ
(2 行)
関数化しない場合。
pgdb=# SELECT foo_id,translate(foo_name, 'ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんゕゖ', 'ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヵヶ') FROM foo;
to_kana
---------
リンゴ
バナナ
(2 行)
カタカナからひらがな。ヴは置換対象外。
SQL
CREATE OR REPLACE FUNCTION to_hiragana(text) RETURNS text AS $$
BEGIN RETURN translate(
$1,
'ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヵヶ',
'ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんぶゕゖ'
);
END;
$$ LANGUAGE 'plpgsql';