目次
MySQL では、関数は特定の操作または計算を実行して結果を返すデータベース オブジェクトです。関数は一般に、クエリ、データ処理と変換、および SQL ステートメント内でのその他の操作の実行に使用されます。MySQL には、さまざまな目的に使用できる多くの組み込み関数が用意されています。
1. 文字列関数
関数 | 関数 |
---|---|
CONCAT(str1, str2, ...) | 2 つ以上の文字列を 1 つの文字列に連結します |
長さ(長さ) | 文字列の長さ(文字数)を返します。 |
SUBSTRING(文字列、開始、長さ) | 文字列から部分文字列を抽出します。抽出する開始位置と文字数を指定できます。 |
アッパー(str) | 文字列を大文字に変換する |
下限(文字列) | 文字列を小文字に変換する |
TRIM([先頭 | 末尾 | 両方]rimstr FROM str) | 文字列の先頭、末尾、または両端から指定した文字を削除します (trimstr) |
REPLACE(str, from_str, to_str) | 文字列内の特定の部分文字列を置換します |
LEFT(文字列、長さ) | 文字列の左側の指定された長さの部分文字列を返します。 |
RIGHT(文字列、長さ) | 文字列の右側の指定された長さの部分文字列を返します。 |
LOCATE(substr, str[, start]) | 文字列内の部分文字列 (substr) の位置を検索します。 |
I NSTR(str, substr) | 文字列内の部分文字列の位置を返します。 |
CHAR_LENGTH(文字列) | バイト数ではなく、文字列内の文字数を返します。 |
リバース(文字列) | 文字列内の文字の順序を逆にする |
CONCAT_WS(セパレータ, str1, str2, ...) | 指定された区切り文字を使用して複数の文字列を 1 つの文字列に連結します。 |
左右() | これら 2 つの関数は、文字列の左側または右側から指定された長さの文字を抽出するために使用されます。 |
LPAD(文字列, 長さ, パッド文字列) | 指定されたパディング文字 (padstr) を使用して、指定された長さまで文字列を左詰めします。 |
RPAD(文字列、長さ、パッド文字列) | 指定されたパディング文字 (padstr) を使用して、指定された長さまで文字列を右詰めします。 |
MID()またはSUBSTRING() | 文字列から部分文字列を抽出するために使用されます |
よく使用される文字列関数
文字列の連結
# 字符串拼接
select concat('mysql',' hello');
返される結果:
大文字と小文字を変換する
# 转换为小写
select lower('DAN');
# 转换为大写
select upper('dog');
左右の文字列をパディングする
# 左侧填充
select lpad('11',5,'_');
# 右侧填充
select rpad('11',9,'%');
左右のスペースを削除する
# 去除左右空格
select trim(' dag d awd aw');
文字列インターセプト
select substring('hello world',1,7);
2. 数値関数
-
SUM(column) : 指定された列内のすべての値の合計を計算します。
-
AVG(列) : 指定された列内のすべての値の平均を計算します。
-
COUNT(column) : 指定された列内の非 NULL 値の数をカウントします。行数、または特定の条件を満たす行数をカウントするために使用できます。
-
MAX(列) : 指定された列の最大値を検索します。
-
MIN(column) : 指定された列の最小値を検索します。
-
ROUND(数値, 小数点以下) : 数値を指定された小数点以下の桁数に丸めます。
-
CEIL(数値) : 数値を最も近い整数に切り上げます。
-
FLOOR(数値) : 数値を最も近い整数に切り捨てます。
-
ABS(数値) : 数値の絶対値を返します。
-
POWER(base, exponent) : 指定された数値のべき乗を計算します。
-
SQRT(数値) : 数値の平方根を計算します。
-
MOD(dividend, divisor) : 2 つの数値を除算した余りを計算します。
-
RAND() : 0 から 1 までのランダムな浮動小数点数を生成します。
-
TRUNCATE(数値, 10 進数) : 数値の小数部分を切り取り、指定された小数点以下の桁数を保持します。
-
SIGN(数値) : 数値の符号を返します。つまり、1 は正の数を表し、-1 は負の数を表し、0 はゼロを表します。
-
LOG(数値) : 数値の自然対数を計算します。
これらの数値関数を使用すると、合計、平均、最大、最小、丸め、絶対値、べき乗、剰余の計算など、さまざまな数学的および統計的な演算を実行できます。これらの関数は、データ分析、レポート作成、計算、および数値処理に役立ちます。
小規模なケース: 上記の数値関数を通じて 6 桁のランダムな検証コードを生成します。
アイデア: ランダム生成関数RAND()を使用して、対応する桁数を乗算します。小数点の不足を考慮し、左パディングまたは右パディングを使用して 6 桁を完成させる必要があります。
select lpad(round((rand()*1000000), 0),6,'0')
3.日付機能
-
NOW() : 現在の日付と時刻を返します。
-
CURDATE() : 現在の日付を返します。
-
CURTIME() : 現在時刻を返します。
-
DATE_FORMAT(date, format) : 日付を指定された形式の文字列にフォーマットします。たとえば、「%Y-%m-%d」は年-月-日を意味します。
-
DAYNAME(date) : 日付に対応する曜日の名前を返します。
-
MONTHNAME(date) : 日付に対応する月の名前を返します。
-
DAY(日付) : 日付の日の部分を返します。
-
MONTH(日付) : 日付の月の部分を返します。
-
YEAR(date) : 日付の年の部分を返します。
-
HOUR(time) : 時間の時の部分を返します。
-
MINUTE(時間) : 時間の分の部分を返します。
-
SECOND(time) : 時刻の秒部分を返します。
-
TIMESTAMPDIFF(unit, start, end) : 2 つの日付または時刻の差を計算します。単位は、秒、分、時間、日、月などです。
-
TIMESTAMPADD(単位, 間隔, 日付) : 指定された時間間隔を日付または時刻に追加します。
-
DATE_ADD(日付, INTERVAL expr 単位) : 日付に期間を追加します。
-
DATE_SUB(日付, INTERVAL expr 単位) : 日付から期間を減算します。
-
DATEDIFF(end, start) : 2 つの日付の間の日数の差を計算します。
-
STR_TO_DATE(str, format) : 指定された形式に従って、文字列を日付に変換します。
これらの日付関数を使用すると、日付の書式設定、日付の計算、日付の比較など、クエリやデータ操作でさまざまな日付と時刻の処理操作を実行できます。特定のニーズに基づいて、日付と時刻のデータを処理する適切な関数を選択できます。
小規模なケース: 全従業員の勤続日数をクエリし、勤続日数の逆順に並べ替えます。
SELECT employee_id, DATEDIFF(NOW(), hire_date) AS days_since_hire
FROM employees
ORDER BY days_since_hire DESC;
DATEDIFF
この関数を使用してNOW()
、現在の日付 ( ) と入社日の間の日数の差を計算し、days_since_hire
その結果をフィールドごとに逆順に並べ替えて、入社日数が最も長い従業員を最初に表示します。
4. プロセス機能
CASE 式: SQL クエリで条件分岐ロジックを実装するために使用されます。これには主に 2 つの形式があります。
単純な CASE 式: 複数の IF-THEN-ELSE ステートメントに似ています。
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
ELSE default_result
END
CASE 式の検索: より複雑な条件を使用して分岐ロジックを実装できます。
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
IF 関数: プログラミング言語の条件ステートメントと同様に、条件ロジックを実装するために使用されます。条件式を受け入れ、条件が true の場合は値を返し、それ以外の場合は別の値を返します。
IF(condition, value_if_true, value_if_false)
COALESCE 関数: 一連の式から最初の非 NULL 値を返します。通常、NULL の可能性のあるデータを処理するために使用されます。
COALESCE(expr1, expr2, ...)
NULLIF 関数: 2 つの式が等しい場合は NULL を返し、そうでない場合は最初の式の値を返します。2 つの式が等しいことを処理するために使用されます。
NULLIF(expr1, expr2)
5. まとめ
よく使われる機能
1. 文字列関数
CONCAT、LOWER、UPPER、LPAD、RPAD、TEIM、SUNSTRING
2. 数値関数
天井、床、MOD、ランド、ラウンド
3.日付機能
CURDATE、CURTIME、NOW、YEAR、MONTH、DAY、DATE_ADD、DATEDIFF
4. プロセス機能
IF,CASE[...] WHEN ... THEN ... ELSE ... END