MySQLの共通関数の概要

MySQLの共通関数の概要

序文:

MySQL データベースは、よく使用される集計関数、日付および文字列処理関数など、幅広い関数を提供します。これらの関数は、SELECT ステートメントとその条件式の両方で使用できます。関数を使用すると、ユーザーはテーブル内のデータをより便利に処理できるため、MySQL データベースがより強力になります。この記事では主に、いくつかの一般的な機能の使い方を紹介します。

1. 集計関数

集計関数は、よく使用される関数の一種です。以下に一覧を示します。

  • COUNT(col)はクエリ結果の行数をカウントします
  • MIN(col) 指定された列の最小値を照会する
  • MAX(col) 指定された列の最大値を照会する
  • SUM(col)は指定された列の合計を返します
  • AVG(col)は指定された列データの平均値を返します。

2. 数値関数

数値関数は主に、数値データを処理して目的の結果を得るために使用されます。よく使用される関数をいくつか以下に示します。具体的な使用方法を試すことができます。

  • ABS(x) xの絶対値を返す
  • BIN(x)はxの2進値を返す
  • CEILING(x) xより大きい最小の整数値を返します。
  • EXP(x)は、e(自然対数の底)をx乗した値を返します。
  • FLOOR(x) は、x 未満の最大の整数値を返します。
  • GREATEST(x1,x2,...,xn)はセット内の最大値を返します。
  • LEAST(x1,x2,...,xn) セット内の最小値を返します
  • LN(x)はxの自然対数を返す。
  • LOG(x,y) yを底とするxの対数を返します。
  • MOD(x,y)はx/yの剰余を返します。
  • PI() 円周率(π)の値を返します。
  • RAND() は 0 から 1 の間のランダムな値を返します。パラメータ (シード) を指定して、RAND() 乱数ジェネレータで指定された値を生成できます。
  • ROUND(x,y) パラメータxの値をy小数点以下桁数で丸めて返します。
  • TRUNCATE(x,y) は、小数点以下 y 桁に切り捨てられた数値 x を返します。

例:

# ABS() 関数は絶対値を計算しますmysql> SELECT ABS(5),ABS(-2.4),ABS(-24),ABS(0);
+--------+-----------+----------+---------+
| ABS(5) | ABS(-2.4) | ABS(-24) | ABS(0) |
+--------+-----------+----------+---------+
| 5 | 2.4 | 24 | 0 |
+--------+-----------+----------+---------+

# 丸め関数 CEIL(x) と CEILING(x) は同じ意味を持ち、x 以上の最小の整数値を返します。mysql> SELECT CEIL(-2.5),CEILING(2.5);
+------------+--------------+
| 天井(-2.5) | 天井(2.5) |
+------------+--------------+
| -2 | 3 |
+------------+--------------+

# 剰余関数 MOD(x,y) は、x を y で割った余りを返します。mysql> SELECT MOD(63,8),MOD(120,10),MOD(15.5,3);
+-----------+-------------+--------------+
| MOD(63,8) | MOD(120,10) | MOD(15.5,3) |
+-----------+-------------+--------------+
| 7 | 0 | 0.5 |
+-----------+-------------+--------------+

# RAND() 関数が呼び出されると、0 から 1 の間の乱数を生成できます。mysql> SELECT RAND(), RAND(), RAND();
+---------------------+--------------------+----------------------+
| RAND() | RAND() | RAND() |
+---------------------+--------------------+----------------------+
| 0.24996517063115273 | 0.9559759106077029 | 0.029984071878701515 |
+---------------------+--------------------+----------------------+

3. 文字列関数

文字列関数は文字列型のデータを処理でき、プログラム アプリケーションで非常に便利です。よく使用される関数をいくつか示します。

  • LENGTH(s) 文字列の長さを計算し、文字列のバイト長を返します。
  • CONCAT(s1,s2...,sn) 文字列連結関数。1つ以上のパラメータを連結して生成された文字列を返します。
  • INSERT(str,x,y,instr)は、位置xから始まる文字列strの部分文字列とy文字を文字列instrに置き換え、結果を返します。
  • LOWER(str) 文字列内の文字を小文字に変換します
  • UPPER(str) 文字列内の文字を大文字に変換します
  • LEFT(str,x) 文字列strの左端のx文字を返します。
  • RIGHT(str,x) 文字列strの右端のx文字を返します。
  • TRIM(str)は文字列の両側のスペースを削除します
  • REPLACE 文字列置換関数。置換後の新しい文字列を返します。
  • SUBSTRING は文字列をインターセプトし、指定された位置から始まる指定された長さの文字列を返します。
  • REVERSE(str) 文字列strを反転した結果を返します。

例:

# LENGTH(str) 関数の戻り値は文字列のバイト長です。mysql> SELECT LENGTH('name'), LENGTH('database');
+----------------+---------------------+
| 長さ('名前') | 長さ('データベース') |
+----------------+---------------------+
| 4 | 9 |
+----------------+---------------------+

# CONCAT(sl, s2, ...) 関数は、パラメータを連結して生成された文字列を返します。いずれかのパラメータが NULL の場合、戻り値は NULL になります。
mysql> SELECT CONCAT('MySQL','5.7'),CONCAT('MySQL',NULL);
+----------------------+----------------------+
| CONCAT('MySQL','5.7') | CONCAT('MySQL',NULL) |
+----------------------+----------------------+
| MySQL5.7 | NULL |
+----------------------+----------------------+

# INSERT(s1, x, len, s2)は、位置xから始まる部分文字列を含む文字列s1を返し、s2をlen文字の長さの文字列に置き換えます。
mysql> SELECT INSERT('フットボール',2,4,'プレイ') AS col1,
  -> INSERT('フットボール',-1,4,'プレイ') AS col2,
  -> INSERT('フットボール',3,20,'プレイ') AS col3;
+----------+----------+---------+
| 列1 | 列2 | 列3 |
+----------+----------+---------+
| FPlayall | フットボール | FoPlay |
+----------+----------+---------+

# UPPER、LOWER は大文字と小文字を変換する関数です。mysql> SELECT LOWER('BLUE'), LOWER('Blue'), UPPER('green'), UPPER('Green');
+---------------+---------------+----------------+----------------+
| LOWER('BLUE') | LOWER('Blue') | UPPER('green') | UPPER('Green') |
+---------------+---------------+----------------+----------------+
| 青 | 青 | 緑 | 緑 |
+---------------+---------------+----------------+----------------+

# LEFT、RIGHT は左または右の文字列をインターセプトする関数です。mysql> SELECT LEFT('MySQL',2), RIGHT('MySQL',3);
+-+----------------------------------+
| 左('MySQL',2) | 右('MySQL',3) |
+-+----------------------------------+
| マイ | SQL |
+-+----------------------------------+

# REPLACE(s, s1, s2) は文字列 s 内の文字列 s1 のすべての出現を文字列 s2 に置き換えます。
mysql> SELECT REPLACE('aaa.mysql.com','a','w');
+----------------------------------+
| REPLACE('aaa.mysql.com','a','w') |
+----------------------------------+
| 日本語
+----------------------------------+

# 関数SUBSTRING(s, n, len)はlenパラメータの形式を受け取り、位置nから始まる長さlen文字の部分文字列を文字列sから返します。
mysql> SELECT SUBSTRING('computer',3) AS col1,
  -> SUBSTRING('コンピュータ',3,4) AS col2,
  -> SUBSTRING('コンピュータ',-3) AS col3,
  -> SUBSTRING('コンピュータ',-5,3) AS col4;
+--------+------+------+------+
| 列1 | 列2 | 列3 | 列4 |
+--------+------+------+------+
| mputer | mput | ter | put |
+--------+------+------+------+

4. 日付と時刻の機能

  • CURDATE 関数と CURRENT_DATE 関数は同じ機能を持ち、現在のシステム日付値を返します。
  • CURTIME 関数と CURRENT_TIME 関数は同じ機能を持ち、現在のシステム時刻値を返します。
  • NOW 関数と SYSDATE 関数は同じ機能を持ち、現在のシステムの日付と時刻の値を返します。
  • UNIX_TIMESTAMP UNIXタイムスタンプ関数を取得し、UNIXタイムスタンプに基づいて符号なし整数を返します。
  • FROM_UNIXTIMEはUNIXタイムスタンプを時間形式に変換します。これはUNIX_TIMESTAMPの逆関数です。
  • MONTH 指定された日付の月を取得します
  • MONTHNAME 指定された日付の月の英語名を取得します
  • DAYNAME 指定された日付に対応する曜日の英語名を取得します
  • DAYOFWEEK 指定された日付に対応する週のインデックス位置の値を取得します。
  • WEEK 指定された日付の年内の週を取得します。戻り値は 0 ~ 52 または 1 ~ 53 の範囲です。
  • DAYOFYEAR 指定された日付の年間通算日を取得します。戻り値の範囲は1~366です。
  • DAYOFMONTH 指定された日付の月の日を取得します。戻り値の範囲は 1 から 31 です。
  • YEAR 年を取得します。戻り値の範囲は 1970 から 2069 です。
  • TIME_TO_SEC 時間パラメータを秒に変換します
  • SEC_TO_TIMEは秒を時間に変換します。これはTIME_TO_SECの逆関数です。
  • DATE_ADD 関数と ADDDATE 関数は同じ機能を持ち、どちらも指定された時間間隔を日付に追加します。
  • DATE_SUB 関数と SUBDATE 関数は同じ機能を持ち、どちらも日付から指定された時間間隔を減算します。
  • ADDTIME 時間追加操作、指定された時間を元の時間に追加します
  • SUBTIME時間減算演算、元の時間から指定された時間を減算します
  • DATEDIFF は 2 つの日付間の間隔を取得し、パラメーター 1 からパラメーター 2 を引いた値を返します。
  • DATE_FORMATは指定された日付をフォーマットし、パラメータに従って指定された形式で値を返します。
  • WEEKDAY 指定された日付の週内の対応する曜日インデックスを取得します。

例:

# CURDATE() 関数と CURRENT_DATE() 関数は同じ機能を持ち、現在の日付を "YYYY-MM-DD" または "YYYYMMDD" 形式で返します。mysql> SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE()+0;
+------------+----------------+------------------+
| CURDATE() | CURRENT_DATE() | CURRENT_DATE()+0 |
+------------+----------------+------------------+
| 2019-10-22 | 2019-10-22 | 20191022 |
+------------+----------------+------------------+

# MONTH(date) 関数は、指定された日付に対応する月を返します。mysql> SELECT MONTH('2017-12-15');
+---------------------+
| 月('2017-12-15') |
+---------------------+
| 12 |
+---------------------+

# DATE_ADD(date,INTERVAL expr type) と ADDDATE(date,INTERVAL expr type) は同じ関数を持ち、どちらも日付加算演算を実行するために使用されます。
mysql> DATE_ADD('2018-10-31 23:59:59',INTERVAL 1 SECOND) を C1 として選択します。
  -> DATE_ADD('2018-10-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND) AS C2,
  -> ADDDATE('2018-10-31 23:59:59',間隔1秒) AS C3;
+---------------------+---------------------+---------------------+
| C1 | C2 | C3 |
+---------------------+---------------------+---------------------+
| 2018-11-01 00:00:00 | 2018-11-01 00:01:00 | 2018-11-01 00:00:00 |
+---------------------+---------------------+---------------------+

# DATEDIFF(date1, date2)は開始時刻date1と終了時刻date2の間の日数を返しますmysql> SELECT DATEDIFF('2017-11-30','2017-11-29') AS COL1,
  -> DATEDIFF('2017-11-30','2017-12-15') を col2 として計算します。
+------+------+
| 列1 | 列2 |
+------+------+
| 1 | -15 |
+------+------+

# DATE_FORMAT(date, format)関数は、formatで指定された形式に従って日付値を表示します。mysql> SELECT DATE_FORMAT('2017-11-15 21:45:00','%W %M %D %Y') AS col1,
  -> DATE_FORMAT('2017-11-15 21:45:00','%h:i% %p %M %D %Y') AS col2;
+------------------------------+----------------------------+
| 列1 | 列2 |
+------------------------------+----------------------------+
| 2017 年 11 月 15 日水曜日 | 2017 年 11 月 15 日午後 9:1 |
+------------------------------+----------------------------+

5. プロセス制御機能

プロセス制御関数は条件付き操作を実行して SQL 条件付きロジックを実装できるため、開発者は以下に示すように、一部のアプリケーション ビジネス ロジックをデータベース バックエンドに変換できます。

  • IF(test,t,f) テストが真であればtを返し、そうでない場合はfを返す
  • IFNULL(arg1,arg2) arg1がnullでない場合はarg1を返し、そうでない場合はarg2を返す
  • NULLIF(arg1,arg2) は、arg1=arg2 の場合は NULL を返し、それ以外の場合は arg1 を返します。
  • CASE WHEN [test1] THEN [result1]...ELSE [default] END testNが真であればresultNを返し、そうでなければdefaultを返す
  • CASE [test] WHEN [val1] THEN [result]...ELSE [default]END testとvalNが等しい場合はresultNが返され、そうでない場合はdefaultが返されます。

例:

# IF ステートメントを使用すると、条件または式の値に基づいて SQL ステートメントのグループを実行できます。mysql> SELECT IF(1<2,1,0) c1,IF(1>5,'√','×') c2,IF(STRCMP('abc','ab'),'yes','no') c3;
+----+----+-----+
| c1 | c2 | c3 |
+----+----+-----+
| 1 | × | はい |
+----+----+-----+

# IFNULL は 2 つの引数を受け入れ、最初の引数が NULL でない場合は最初の引数を返します。それ以外の場合、IFNULL 関数は 2 番目の引数を返します。mysql> SELECT IFNULL(5,8),IFNULL(NULL,'OK');
+-------------+-------------------+
| IFNULL(5,8) | IFNULL(NULL,'OK') |
+-------------+-------------------+
| 5 | わかりました |
+-------------+-------------------+

# NULLIF 関数mysql> SELECT NULLIF(5,8),NULLIF(8,8);
+-------------+--------------+
| NULLIF(5,8) | NULLIF(8,8) |
+-------------+--------------+
| 5 | NULL |
+-------------+--------------+

# CASE WHEN functionmysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;
+--------------------------------------------+
| CASE WHEN 1>0 THEN 'true' ELSE 'false' END |
+--------------------------------------------+
| 本当です |
+--------------------------------------------+
mysql> SELECT CASE 11 WHEN 1 THEN 'one'
  -> WHEN 2 THEN 'two' ELSE 'more' END;
+-------------------------------------------------------------+
| ケース 11 1 の場合、「1」
2 の場合、「2」、それ以外の場合、「さらに」で終了 |
+-------------------------------------------------------------+
| 詳細 |
+-------------------------------------------------------------+

6. 暗号化機能

暗号化関数は主に文字列を暗号化するために使用されます。よく使用される関数をいくつか以下に示します。

  • ENCRYPT(str,salt) は UNIXcrypt() 関数を使用して、文字列 str をキーワード salt (キーのようにパスワードを一意に識別できる文字列) で暗号化します。
  • ENCODE(str,key) は、key をキーとして使用して文字列 str を暗号化します。ENCODE() を呼び出した結果はバイナリ文字列であり、BLOB 型として保存されます。
  • MD5() 文字列strのMD5チェックサムを計算します。
  • PASSWORD(str) は、文字列 str の暗号化されたバージョンを返します。この暗号化プロセスは元に戻すことができず、UNIX パスワード暗号化プロセスとは異なるアルゴリズムを使用します。
  • SHA() 文字列strのセキュアハッシュアルゴリズム(SHA)チェックサムを計算します。

例:

# ENCRYPT 関数mysql> SELECT ENCRYPT('root','salt');
+------------------------+
| ENCRYPT('ルート','ソルト') |
+------------------------+
|saFKJij3eLACw |
+------------------------+

# MD5() 関数mysql> SELECT MD5('123456');
+----------------------------------+
| MD5('123456') |
+----------------------------------+
|e10adc3949ba59abbe56e057f20f883e |
+----------------------------------+

# パスワード関数mysql> select PASSWORD('abcd');
+------------------------------------------+
| パスワード('abcd') |
+------------------------------------------+
| *A154C52565E9E7F94BFC08A1FE702624ED8EFFDA |
+------------------------------------------+

要約:

この記事では、主によく使用される MySQL 関数の機能を紹介し、いくつかの関数の使用方法を簡単に説明します。実際の環境では、これらの関数はネストされて、より複雑な方法で使用される場合があります。使用時には、各パラメータの役割にさらに注意を払っていただければ幸いです。

これで、よく使われるMySQL関数のまとめの記事は終了です。より関連性の高いMySQLのよく使われる関数については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き閲覧してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL ストアド プロシージャと共通関数のコード分析
  • 一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]
  • よく使用される MySQL 関数の完全なリスト (分類および要約)
  • MySQLの一般的な関数
  • よく使われるMySQL関数のまとめ(共有)
  • MySQL よく使われる関数の詳細な概要

<<:  ZabbixはSNMPに基づいてLinuxホストを監視します

>>:  初心者でもjsのtypeofとinstanceofの違いを理解できます

推薦する

ul リスト タグ デザイン ウェブ ページ 複数列レイアウト

数日前、CSS で 3 列レイアウトを書いていたときに、突然この方法を思いつきました。このアイデアは...

MySQL データベースは XA 仕様をどのように実装しますか?

MySQL 一貫性ログMySQL データベースの電源が切れた場合、コミットされていないトランザクシ...

WIN2008 サーバーのコマンド ラインを使用して IIS7 コンポーネントをインストールおよびアンインストールする方法

注意: .NET FrameWork はコア モードで実行できないため、コア インストール モードの...

JS初心者が配列を処理するための実践的な方法のまとめ

join() メソッド: 指定された区切り文字を使用して配列内のすべての要素を文字列に接続します。例...

...

MySQL にテーブルデータを挿入するときに中国語の文字化けが発生する問題を解決する方法

1. 問題開発中に、他のデータベースから MySQL データベース テーブルにデータを挿入すると、次...

W3C 検証に合格するにはどうすればいいですか?

W3C では、さまざまなタグの規定を設定するだけでなく、Web ページの作成者が実際に W3C 規...

Nginx イントラネット スタンドアロン リバース プロキシの実装

目次1 Nginxのインストール2 Nginxの設定3 ホストファイルを変更する4 テストNginx...

CSS (カスケーディング スタイル シート) の一般的な用語の概要

CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...

HTMLからReactを実装する方法を教えます

ReactとはReact は、効率的で高速なユーザー インターフェイスを構築するためのシンプルな J...

XHTML におけるタイトルタグと段落タグの使用に関する詳細な説明

XHTML 見出しの概要Word 文書を作成するときは、「第 1 章」、「1.2.1」などのタイトル...

Vue パッケージアップロードサーバー更新 404 問題に対する 2 つの解決策

1: nginxサーバーソリューション、.conf構成ファイルを変更する解決策は2つある1: 位置 ...

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

Ubuntu 18.04 が VMware 仮想マシンでネットワークに接続できない問題の解決策

仮想マシン内のUbuntu 18.04がネットワークに接続できない問題の解決策は次のとおりですVMw...