Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

第6回 MySQL事始 SQL文(3) 代表的なSQL関数

edited by DB Online   2011/08/17 07:00

今回はMySQLの代表的なSQL関数を6つのカテゴリに分けて解説します。

代表的なSQL関数

SQL文内で関数を利用する書式は以下の通りです。関数によっては引数が無いものや複数あるものなど様々です。

関数名([引数, [引数, ... ]])
数値関数

整数や小数などの数値を演算するための関数です。MySQLには一般的な数値演算に必要となる関数は用意されています。

四則演算関連 +, -, *, /, DIV,  %, MOD, POW, POWER, SQRT
ビット演算 &, <<, >>, BIT_COUNT, ^, |, ~
四捨五入関連 CEIL, CEILING, FLOOR, TRUNCATE
絶対値関連 ABS, SIGN
三角関数関連 SIN, COS, COT, TAN, ACOS, ASIN, ATAN, ATAN2, DEGREES, RADIANS, PI
その他        CRC32, EXP, LN, LOG, LOG10, LOG2, OCT

11.4.1.算術演算子
11.4.2.数学関数

文字関数

MySQLには様々な文字列を操作する関数が用意されています。例えばCASTは文字列を数値型など他のデータ型に、LCASEUCASEはそれぞれアルファベットを全て小文字と大文字に変換する関数です。他にも指定した文字数を左側と右側から取得するLEFTRIGHT、文字列の長さを取得するLENGTH、文字列を連結するCONCATなども使用頻度が高い関数です。

11.3.文字列関数

日時関数

日付や時刻に関する関数です。NOWなど現在の日時を取得する関数や、日時の値から年YEAR、月MONTH、日DAY、時TIME、分MINUTE、秒SECOND、ミリ秒MICROSECONDを取得する各関数などが利用できます。他にもその年の何日目にあたるかを調べるDAYOFYEARもあります。また、日付や時刻の表示形式を変換するDATE_FORMATTIME_FORMATも便利な関数です。

11.5. 日付時刻関数

フロー制御関数

プログラム言語におけるIFCASEと同様に、IFCASEの各関数を使用することで条件によって返す値を変えることができます。特殊なパターンはNULLが関連する場合で、値がNULLかそうでないかで返す値を変更するIFNULLと、与えられた条件式が真の場合にNULLを返すNULLIFがあります。

11.2. 制御フロー関数

暗号化関数

MySQLはデータを暗号化して格納できますが、アプリケーションが明示的にMySQLの暗号化関数を使用してデータを暗号化する必要があります。
AESまたはDESでデータを暗号化するAES_ENCRYPTDES_ENCRYPTが利用可能で、それぞれに対応した復号化関数AES_DECRYPTDES_DECRYPTが用意されています。 MySQLサーバがユーザのパスワードを管理する際の暗号化の処理はPASSWORD関数で利用できますが。ただしPASSWORDで暗号化した値は復号化する関数がありません。

暗号化とは直接関連しませんが、データのハッシュ値を求める関数は以下の3種類用意されています。

関数 アルゴリズム
MD5 MD5 128-bit
SHA1 SHA-1 160-bit
SHA2 SHA-2 (ビット数は明示的に指定)

また、データを圧縮および展開するCOMPRESSおよびUNCOMPRESSも利用可能です。

11.10.2. 暗号化関数と圧縮関数

その他の関数

上記の各カテゴリに当てはまらない関数も多数あります。

関数 詳細
UUID 実行するたびに一意なUUID(汎用一意識別子)を生成する
SLEEP 指定した秒数処理を停止する
BENCHMARK 指定した処理を指定した回数繰り返す

他に、現在接続しているユーザがログイン時に指定したアカウント名を表示するUSER(SESSION_USERとSYSTEM_USERUSERと同じ)と、接続しているユーザの認証時にサーバが使用したアカウント名を表示するCURRENT_USERもあります。これらの関数についてはMySQLのセキュリティに関する回で解説予定です。


著者プロフィール

  • 梶山隆輔(カジヤマリュウスケ)

    日本オラクル株式会社 MySQL Global Business Unit Asia Pacific & Japan担当 MySQL Principal Sales Consultant オラクル社において、MySQLのお客様環境への導入支援や製品の技術解説を担当するセールスコンサルタントチームのアジア太平洋地域リーダー。多国籍なMySQL部門にて、台湾、オーストラリア、インドに在籍するチームメンバーを束ね、アジア太平洋地域の25以上の国や地域でのMySQL普及やビジネスの拡大をミッションとする。  

バックナンバー

連載:MySQL事始

もっと読む

All contents copyright © 2007-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5