PolarDB for PostgreSQL (Compatible with Oracle) では、TO_SINGLE_BYTE および TO_MULTI_BYTE の Oracle 互換関数を、polar_to_single_byte 拡張を通じてサポートしています。TO_SINGLE_BYTE は、全角数字や全角英字などのマルチバイト文字を、対応するシングルバイト文字に変換します。TO_MULTI_BYTE はその逆の処理を行います。これらの関数は標準 PostgreSQL の一部ではなく、Oracle 互換性を維持するために提供される拡張機能です。
前提条件
この拡張機能が利用可能かどうかは、クラスターの作成時期によって異なります。
2020 年 3 月 30 日以降に作成されたクラスター:データベースを作成すると、拡張機能が自動的に作成されます。追加の手順は不要です。
2020 年 3 月 30 日より前に作成されたクラスター:拡張機能は自動的に作成されません。データベースを作成した後、以下の文を実行してインストールしてください。
CREATE EXTENSION polar_to_single_byte;
元の Oracle 関数の仕様については、「TO_SINGLE_BYTE」および「TO_MULTI_BYTE」の Oracle ドキュメント リファレンスをご参照ください。
サポートされるデータの型
両関数とも、以下の入力型を受け付け、入力と同じ型を出力します。
| 関数 | 入力型 | 出力型 |
|---|---|---|
| TO_SINGLE_BYTE | CHAR | CHAR |
| TO_SINGLE_BYTE | CHARACTER VARYING | CHARACTER VARYING |
| TO_SINGLE_BYTE | TEXT | TEXT |
| TO_MULTI_BYTE | CHAR | CHAR |
| TO_MULTI_BYTE | CHARACTER VARYING | CHARACTER VARYING |
| TO_MULTI_BYTE | TEXT | TEXT |
使用例
TO_SINGLE_BYTE
全角文字列を ASCII 文字列に変換します。
SELECT to_single_byte('123$test');
to_single_byte
----------------
123$test
(1 row)TO_MULTI_BYTE
ASCII 文字列を全角文字列に変換します。
SELECT to_multi_byte('123$test');
to_multi_byte
------------------
123$test
(1 row)