MySQLの主要関数と実用的なクエリ例

1. 文字列操作関数

1.1 CONCAT

複数の文字列を結合して単一の文字列を生成します。

SELECT CONCAT('Web', '-', 'App') AS combined_str;

出力結果は Web-App となります。

1.2 SUBSTRING

文字列から指定した位置と長さの部分文字列を抽出します。

SELECT SUBSTRING('Database', 1, 4) AS partial_str;

出力結果は Data となります。

1.3 LENGTH

文字列のバイト長または文字数を返します。

SELECT LENGTH('System') AS char_count;

出力結果は 6 となります。

1.4 UPPER と LOWER

文字列をそれぞれ大文字、小文字に変換します。

SELECT UPPER('root') AS upper_str, LOWER('ADMIN') AS lower_str;

出力結果は ROOTadmin となります。

1.5 TRIM

文字列の先頭および末尾にある空白や指定した文字を削除します。

SELECT TRIM('  server-host  ') AS trimmed_str;

出力結果は server-host となります。

2. 数値計算関数

2.1 ABS

数値の絶対値を取得します。

SELECT ABS(-42) AS absolute_val;

出力結果は 42 となります。

2.2 ROUND

数値を指定した小数点以下の桁数で四捨五入します。

SELECT ROUND(987.6543, 2) AS rounded_val;

出力結果は 987.65 となります。

2.3 CEIL と FLOOR

CEIL は指定した数値以上の最小の整数を返し、FLOOR は指定した数値以下の最大の整数を返します。

SELECT CEIL(45.2) AS ceil_val, FLOOR(45.8) AS floor_val;

出力結果は 4645 となります。

2.4 MOD

除算の余り(剰余)を計算します。

SELECT MOD(25, 7) AS modulus_val;

出力結果は 4 となります。

3. 日時関数

3.1 NOW

現在の日付と時刻を取得します。

SELECT NOW() AS current_datetime;

出力結果は現在の日時、例えば 2024-05-20 10:15:30 となります。

3.2 CURDATE と CURTIME

現在の日付と現在の時刻をそれぞれ個別に取得します。

SELECT CURDATE() AS today_date, CURTIME() AS current_clock;

出力結果は 2024-05-2010:15:30 となります。

3.3 DATE_FORMAT

日付または時刻を指定したフォーマットの文字列に変換します。

SELECT DATE_FORMAT(NOW(), '%Y/%m/%d %H:%i') AS formatted_datetime;

出力結果は 2024/05/20 10:15 となります。

3.4 DATEDIFF

2つの日付の差を日数で計算します。

SELECT DATEDIFF('2024-12-31', '2024-01-01') AS days_diff;

出力結果は 365 となります。

4. 集約関数

4.1 COUNT

条件に一致するレコードの件数を返します。

SELECT COUNT(id) AS total_records FROM accounts;

4.2 SUM

数値列の合計値を計算します。

SELECT SUM(amount) AS total_sum FROM transactions;

4.3 AVG

数値列の平均値を算出します。

SELECT AVG(score) AS avg_val FROM examinations;

4.4 MAX と MIN

数値列の最大値と最小値をそれぞれ取得します。

SELECT MAX(rate) AS max_rate, MIN(rate) AS min_rate FROM pricing;

5. 条件分岐関数

5.1 IF

条件式の真偽に応じて異なる値を返します。

SELECT item_name, IF(stock_qty > 0, 'Available', 'Sold Out') AS availability FROM items;

5.2 IFNULL

式の結果がNULLである場合に、代替の値を返します。

SELECT user_name, IFNULL(backup_email, 'Not Provided') AS secondary_email FROM profiles;

5.3 CASE

複数の条件に基づいて異なる値を返し、SQLにおけるswitch-caseのような制御フローを提供します。

SELECT customer_name,
       CASE
           WHEN points < 100 THEN 'Standard'
           WHEN points >= 100 AND points < 500 THEN 'Silver'
           ELSE 'Gold'
       END AS membership_level
FROM customers;

タグ: MySQL SQL database RDBMS

6月21日 23:01 投稿