Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

SQLの関数についてまとめています。

SQL関数の使い方

SQL関数には、組み込み関数とユーザ定義関数があります。直値やカラムを引数として、さまざまな計算が可能です。

SQL関数の定義方法は、CREATE FUNCTION

SQL関数(ストアドファンクション)は、あらかじめ用意されたものだけでなくユーザが定義することが可能です。

CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL}
    SONAME shared_library_name

関連)MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.3.1 ユーザー定義関数のための CREATE FUNCTION 構文

ストアドファンクションとストアドプロシジャの違いは、返り値の受け渡し方法にあります。ストアドファンクションは、関数自体が返り値を持つのに対し、ストアドプロシジャでは、引数にIN用、OUT用、IN/OUT用を設定して返り値の受け渡しを行います。

例えば、Selectクエリ内で以下のように使うには、my_funcをcreate FUNCTOINで定義しておく必要があります。

select emp_no, my_func(first_name) as first_name from employees;

SQL関数のサンプルコード

SQL関数のサンプルコードと実行例を紹介します。

レコード件数を取得するcount関数

countは対象テーブルのレコード件数を取得します。引数に*を指定しcount(*)とするとテーブル全件の件数を取得します。

mysql> select count(*) from employees;
+----------+
| count(*) |
+----------+
|   300025 |
+----------+
1 row in set (1.43 sec)

【関連記事】
SQLのカウントはcount関数使用 引数に条件指定も可能

文字列に変換するTO_CHAR関数

日付や数値を文字列に変換する関数です。

SELECT TO_CHAR(SYSDATE,'YYYY/MM/DD HH24:MI:SS') FROM DUAL

----------------
2020/08/20 12:00:00

TO_CHARは、Oracleなどで使用できる関数。MySQLやSQL Serverでは使用できません。

【関連記事】
TO_CHAR関数の使い方を解説!SQLで数値や日付を書式を指定して文字列に変換

文字列長を取得するLENGTH関数

取得したカラムや文字列の長さを取得します。以下の例では、employees(社員)テーブルから、社員番号(emp_no)、姓名の名(first_name)、姓名の姓(last_name)、first_nameの文字列長を取得しています。

select emp_no, first_name, last_name, length(first_name)
from employees
limit 10;

+--------+------------+-----------+--------------------+
| emp_no | first_name | last_name | length(first_name) |
+--------+------------+-----------+--------------------+
|  10001 | xGeorgi    | Facello   |                  7 |
|  10002 | Bezalel    | Simmel    |                  7 |
|  10003 | Parto      | Bamford   |                  5 |
|  10004 | Chirstian  | Koblick   |                  9 |
|  10005 | Kyoichi    | Maliniak  |                  7 |
|  10006 | Anneke     | Preusig   |                  6 |
|  10007 | Tzvetan    | Zielinski |                  7 |
|  10008 | Saniya     | Kalloufi  |                  6 |
|  10009 | Sumant     | Peac      |                  6 |
|  10010 | Duangkaew  | Piveteau  |                  9 |
+--------+------------+-----------+--------------------+
10 rows in set (0.00 sec)

【関連記事】
【SQL】文字数を調べる!SQLでのLENGTH関数の使い方を徹底解説!

文字列操作を行うSUBSTRING関数やRIGHT、LEFT関数

文字列から一部を切り出すなどの操作を行う関数です。

以下は、employees(社員)テーブルから、姓名の名(first_name)と姓名の姓(last_name)をleft関数で左から1文字を抜き出し、conat関数で文字列を連結し、イニシャルを取得しています。

mysql> select emp_no, first_name, last_name, concat(left(first_name,1),".",left(last_name,1)) as initial from employees limit 10;
+--------+------------+-----------+---------+
| emp_no | first_name | last_name | initial |
+--------+------------+-----------+---------+
|  10001 | Georgi     | Facello   | G.F     |
|  10002 | Bezalel    | Simmel    | B.S     |
|  10003 | Parto      | Bamford   | P.B     |
|  10004 | Chirstian  | Koblick   | C.K     |
|  10005 | Kyoichi    | Maliniak  | K.M     |
|  10006 | Anneke     | Preusig   | A.P     |
|  10007 | Tzvetan    | Zielinski | T.Z     |
|  10008 | Saniya     | Kalloufi  | S.K     |
|  10009 | Sumant     | Peac      | S.P     |
|  10010 | Duangkaew  | Piveteau  | D.P     |
+--------+------------+-----------+---------+
10 rows in set (0.00 sec)

【関連記事】
【SQL】文字列を扱う。SUBSTRING関数とRIGHT関数/LEFT関数について解説

グループ内での演算を行うMAXやMIN関数

対象グループの最大値や最小値を取得する関数です。group byと組み合わせて使うことが多いですが、単体でも使えます。

以下は、社員テーブル(employees)から、一番古い誕生日(min)を一番新しい誕生日(max)を取得する例です。

mysql> select min(birth_date),max(birth_date) from employees;
+-----------------+-----------------+
| min(birth_date) | max(birth_date) |
+-----------------+-----------------+
| 1952-02-01      | 1970-01-04      |
+-----------------+-----------------+
1 row in set (0.07 sec)

【関連記事】
【超便利!】SQLのMAX関数・MIN関数の使い方をわかりやすく解説

まとめ

ポテパンダの一言メモ
  • SQLの関数には組み込み関数と、ユーザ定義関数がある
  • ユーザ定義関数は、CREATE FUNCIONで定義する
  • SQL関数の引数には直値やカラム名を指定でき、selectの取得結果を加工できる

 

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。