SQLの関数は大きく下記の種類に分かれます。
- 算術関数(数値計算のための関数)
- 文字列関数(文字列操作のための関数)
- 日付関数(日付操作のための関数)
- 変換関数(データ型や、値を変換するための関数)
- 集約関数(データ集計のための関数)
算術関数(数値計算のための関数)
MOD関数
余りを求める関数
ROUND関数
四捨五入する関数
日付関数(日付操作のための関数)
CURRENT_DATE
現在の日付を取得する。
文字列関数
テストデータ
USER_ID | DEPT_NO | USER_NAME |
---|---|---|
21 | 1002 | 小泉 純子 |
22 | 1003 | 小泉 三郎 |
23 | 1004 | 小泉 花子 |
20 | 1001 | 小泉 純一 |
文字列関数(文字列操作のための関数)
「||」(SQLServerとMySQLでは使えない。)
文字列を連結する関数です。
SQL
1 |
select 'ユーザーID' || DEPT_NO || 'は' || USER_NAME || 'です。' AS INSTRODUCTION from user_master |
実行結果
LENGTH(SQLServerでは使えない。)
文字列長を求める関数
LOWER
小文字化させる。
UPPER
大文字化させる。
REPLACE
文字列置換する。
SUBSTRING
文字列から、特定の文字を切り出す。
変換関数(データ型や値を変換するための関数)
COALESCE関数
NULL値を値へ変換する。
NVL関数(Oracleのみ)
NULLの値を別の値に置き換えることができます。
1 |
SELECT NVL(NAME,'名前なし') FROM ITEM |
DECODE関数(Oracleのみ)
NULLか、NULL以外かで値を変更できます。
1 2 |
SELECT DECODE(NAME,NULL,'名前登録あり','名前登録なし') FROM ITEM |
CASE文を使う場合とそれほど実行速度は変わらないので使い分けはお好みのようですが、DECODE関数は、Oracleでしか使えず汎用性が低いので、汎用性を考慮するとCASE式を使った方が良いとも言われています。
集約関数(データの集約を行うことができる関数)
COUNT関数
テーブルのレコード数を数える。
SUM関数
テーブルの数値列のデータを合計する。
AVG関数
テーブルの数値列のデータを平均する。
MAX関数
テーブルの任意の列の最大値を求める。
MIN関数
テーブルの任意の列の最小値を求める。
重複値を除外して集約関数を使うには?
集約関数では、集約関数の引数に「DISTINCTキーワード」を使用して、重複値を除外して実行することもできます。
1 |
SELECT COUNT(DISTINCT NAME) FROM ITEM; |
その際は、必ずカッコ内に記述するようにしましょう。
集約関数を書くことができる句は?
集計関数を書くことができるのは、下記の三つです。
- SELECT句
- HAVING句
- ORDER BY句
この記事へのコメントはありません。