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;
出力結果は ROOT と admin となります。
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;
出力結果は 46 と 45 となります。
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-20 と 10: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;