SELECT lower(<列名>) FROM <テーブル名>
小文字を大文字に変換
SELECT upper(<列名>) FROM <テーブル名>
lower関数 と upper関数 の 引数 と 戻り値
lower関数
変換結果 = lower(text)
text | 対象の 列名 や 文字列リテラル |
戻り値 | 渡された文字列を小文字に変換した結果 または null |
戻り値の型 | text |
upper関数
変換結果 = upper(text)
text | 対象の 列名 や 文字列リテラル |
戻り値 | 渡された文字列を大文字に変換した結果 または null |
戻り値の型 | text |
lower関数 と upper関数 の使用例
次の SQL は、半角文字の 'PostgreSQL' と 多バイト文字の 'PostgreSQL' を 大文字と小文字に変換し、表示します。なお、変換結果は環境により異なる可能性があります。詳細は次章を参照してください。SELECT lower('PostgreSQL') --結果 = "postgresql"
,upper('PostgreSQL') --結果 = "POSTGRESQL"
,lower('PostgreSQL') --結果 = "postgresql"
,upper('PostgreSQL') --結果 = "POSTGRESQL"

変換規則について
変換の規則は データベース の ロケール(locale) と 照合順序(COLLATE) の影響を受けます。例えば 多バイト文字(全角文字) のアルファベットで、変換が行われるかは設定によります。
ロケール(locale) とは?
ロケールは国際化対応するための仕組みで、日時や通貨の書式、文字の比較方法、ソート方法などを設定します。ロケールはデータベース作成時に指定でき、作成後には変更できません。 ロケールにはいくつかの設定項目がありますが、lower関数 と upper関数 に 影響するのは lc_ctype です。
ロケールの確認方法
次のSQL を実行すると データベース名 と ロケール、lc_ctype が表示されます。SELECT datname, datctype FROM pg_database;
また、次のSQLを使用してもロケール設定を確認できますが、環境によっては表示されない設定項目があります。
SELECT name, setting, context FROM pg_settings WHERE name LIKE 'lc%';
name | 説明 |
---|---|
LC_COLLATE | 文字列の並び替え順序 |
LC_CTYPE | 文字の分類・比較方法 |
LC_MESSAGES | メッセージの言語 |
LC_MONETARY | 通貨の書式 |
LC_NUMERIC | 数字の書式 |
LC_TIME | 日付と時刻の書式 |

照合順序(COLLATE) とは?
ソート順 と 文字の分類方法 は ロケール設定(lc_collate と lc_ctype)で行いますが、これらはデータベース作成後に変更できません。これを緩和するための機能が照合順序で、SQL実行時 や テーブルの列 に対して 照合順序 を指定することで、これらを変更することができます。照合順序の確認方法
次のSQLを実行すると スキーマ名(table_schema)、テーブル名(table_name)、カラム名(column_name)、照合順序(collation_name) が表示されます。照合順序 が null(未設定) の場合、ロケール設定が使用されます。SELECT table_schema, table_name, column_name, collation_name
FROM information_schema.columns
WHERE table_name = '<テーブル名>'

照合順序の指定方法
SQLの実行時やテーブルの作成時に COLLATE 句を使用します。詳細は PostgreSQL公式ドキュメント - 24.2. Collation Support を参照してください。参考資料
- PostgreSQL公式ドキュメント - 9.4. String Functions and Operators
- PostgreSQL公式ドキュメント - 24.1. Locale Support
- PostgreSQL公式ドキュメント - 24.2. Collation Support
検証環境
- PostgreSQL 16.1 on x86_64-pc-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r10) 12.2.1 20220924, 64-bit
- pgAdmin 8.2
- Docker image: postgres:16.1-alpine3.18
- Docker image: dpage/pgadmin4
- Docker Desktop 4.26.1 (131620)
- Docker Engine Engine: 24.0.7
- Docker Compose v2.23.3-desktop.2
- Microsoft SQL Server Management Studio v19.0.1(19.0.20200.0+9286509b)
- Windows 10 Enterprise Version 22H2 OS Build 19045.3930 Experience: Windows Feature Experience Pack 1000.19053.1000.0