SQLの主要な関数

SQLには、データの加工や計算を行うための様々な組み込み関数が用意されています。ここでは、文字列、日付/時間、数値に関する主要な関数を紹介します。

1. 文字列関数

関数名 説明
UPPER(文字列) 文字列をすべて大文字に変換します。 SELECT UPPER('hello'); -> HELLO
LOWER(文字列) 文字列をすべて小文字に変換します。 SELECT LOWER('WORLD'); -> world
SUBSTRING(文字列, 開始位置, 長さ) 文字列の指定された位置から指定された長さの文字列を抽出します。 SELECT SUBSTRING('abcdef', 2, 3); -> bcd
INSTR(対象文字列, 検索文字列) 対象文字列内で検索文字列が最初に出現する位置を返します。見つからない場合は0を返します。 SELECT INSTR('hello world', 'world'); -> 7
LENGTH(文字列) 文字列の長さを返します。 SELECT LENGTH('example'); -> 7
CONCAT(文字列1, 文字列2, ...) 複数の文字列を結合します。 SELECT CONCAT('Hello', ' ', 'World'); -> Hello World
RPAD(文字列, 全体の長さ, パディング文字) 文字列の右側に指定した文字を、全体の長さに達するまで追加します。 SELECT RPAD('abc', 5, '*'); -> abc**
LPAD(文字列, 全体の長さ, パディング文字) 文字列の左側に指定した文字を、全体の長さに達するまで追加します。 SELECT LPAD('abc', 5, '*'); -> **abc
`TRIM([LEADING TRAILING BOTH] [トリム文字 FROM] 文字列)`
REPLACE(文字列, 検索文字列, 置換文字列) 文字列内のすべての検索文字列を置換文字列に変換します。 SELECT REPLACE('hello world', 'o', 'a'); -> hella warld

2. 日付/時間関数

関数名 説明
NOW() 現在の日時を返します。 SELECT NOW(); -> 2023-10-27 10:30:00
CURDATE() 現在の日付を返します。 SELECT CURDATE(); -> 2023-10-27
CURTIME() 現在の時刻を返します。 SELECT CURTIME(); -> 10:30:00
DATEDIFF(日付1, 日付2) 日付1から日付2を引いた日数を返します。 SELECT DATEDIFF('2023-10-31', '2023-10-27'); -> 4
DATE_ADD(日付, INTERVAL 値 単位) 指定した日付に、指定した期間を加算した日付を返します。単位 には DAY, MONTH, YEAR などがあります。 SELECT DATE_ADD('2023-10-27', INTERVAL 5 DAY); -> 2023-11-01
DATE_SUB(日付, INTERVAL 値 単位) 指定した日付から、指定した期間を減算した日付を返します。 SELECT DATE_SUB('2023-10-27', INTERVAL 1 MONTH); -> 2023-09-27
LAST_DAY(日付) 指定した日付の月の最終日を返します。 SELECT LAST_DAY('2023-02-15'); -> 2023-02-28
YEAR(日付) 日付から年を抽出します。 SELECT YEAR('2023-10-27'); -> 2023
MONTH(日付) 日付から月を抽出します。 SELECT MONTH('2023-10-27'); -> 10
DAY(日付) 日付から日を抽出します。 SELECT DAY('2023-10-27'); -> 27

3. 数値関数

関数名 説明
ROUND(数値, n) 数値を小数点以下 n 桁で四捨五入します。n を省略すると整数に四捨五入します。 SELECT ROUND(123.456, 2); -> 123.46
TRUNCATE(数値, n) 数値を小数点以下 n 桁で切り捨てます。 SELECT TRUNCATE(123.456, 2); -> 123.45
CEIL(数値) / CEILING(数値) 数値を切り上げて、それ以上で最小の整数を返します。 SELECT CEIL(123.45); -> 124
FLOOR(数値) 数値を切り捨てて、それ以下で最大の整数を返します。 SELECT FLOOR(123.45); -> 123
MOD(数値1, 数値2) 数値1を数値2で割った余りを返します。 SELECT MOD(10, 3); -> 1
ABS(数値) 数値の絶対値を返します。 SELECT ABS(-10); -> 10
POW(数値, べき乗) / POWER(数値, べき乗) 数値を指定したべき乗に計算します。 SELECT POW(2, 3); -> 8
SQRT(数値) 数値の平方根を返します。 SELECT SQRT(9); -> 3

これらの関数は、RDBMS(MySQL, PostgreSQL, Oracle, SQL Serverなど)によって関数名や引数の挙動が若干異なる場合があります。使用するRDBMSの公式ドキュメントで確認することをお勧めします。