概要:このチュートリアルでは、SQLのUPPER
関数を使用して文字列を大文字に変換する方法を説明します。
SQL UPPER関数の紹介
SQLのUPPER
関数は、文字列内のすべての文字を大文字に変換します。文字列を小文字に変換したい場合は、代わりにLOWER
関数を使用します。
UPPER
関数の構文は、以下のように非常に簡単です。
UPPER(string);
Code language: SQL (Structured Query Language) (sql)
入力文字列がNULL
の場合、UPPER
関数はNULL
を返します。それ以外の場合は、すべての文字が大文字に変換された新しい文字列を返します。
UPPER
関数に加えて、一部のデータベースシステムでは、UPPER
関数と同じUCASE
という名前の追加関数が提供されています。これは「それを実現する方法は複数ある」ということです。
UCASE(string);
Code language: SQL (Structured Query Language) (sql)
SQL UPPER関数の例
次のステートメントは、文字列sql upper
をSQL UPPER
に変換します。
SELECT UPPER('sql upper');
Code language: SQL (Structured Query Language) (sql)
UPPER
----------------------
SQL UPPER
(1 row)
Code language: SQL (Structured Query Language) (sql)
サンプルデータベースのemployees
テーブルを見てみましょう。

次のクエリは、UPPER関数を使用して、従業員の姓を大文字に変換します。
SELECT
UPPER(last_name)
FROM
employees
ORDER BY UPPER(last_name);
Code language: SQL (Structured Query Language) (sql)
このクエリは、employeesテーブルからデータを読み取り、その場で変換しているだけです。テーブル内のデータはそのまま残ります。
データベーステーブル内のデータを大文字に変換するには、UPDATEステートメントを使用します。たとえば、次のステートメントは、従業員のメールアドレスを大文字に更新します。
UPDATE employees
SET
email = UPPER(email);
Code language: SQL (Structured Query Language) (sql)

UPPER関数を使用した大文字と小文字を区別しないデータクエリ
WHERE
句を使用してデータをクエリする場合、データベースシステムは多くの場合、大文字と小文字を区別してデータを照合します。たとえば、リテラル文字列Bruce
はbruce
とは異なります。
次のクエリは結果を返しません。
SELECT
employee_id,
first_name
FROM
employees
WHERE
first_name = 'BRUCE';
Code language: SQL (Structured Query Language) (sql)
大文字と小文字を区別せずにデータを照合するには、UPPER
関数を使用します。たとえば、次のクエリは行を返します。
SELECT
employee_id,
first_name
FROM
employees
WHERE
UPPER(first_name) = 'BRUCE';
Code language: SQL (Structured Query Language) (sql)

上記のクエリは、一致する行を見つけるためにテーブル全体をスキャンすることに注意してください。テーブルが大きい場合、クエリは非常に遅くなります。
これを克服するために、一部のデータベースシステムでは、1つまたは複数の列の関数に基づいてインデックスを定義できる関数ベースのインデックスを提供しており、クエリのパフォーマンスが向上します。
このチュートリアルでは、SQLのUPPER
関数を使用して文字列を大文字に変換する方法を学びました。