=, <=> (NULL-safe), <>, !=, <, <=, >, >=IS NULL / IS NOT NULLBETWEEN ... AND ...、IN (...)、NOT IN (...)LIKE(% 多字元、_ 單字元)、REGEXP/RLIKE 正則比對STRCMP(expr1, expr2):字串比較,相等回 0,小於回 -1,大於回 1NOT, !、AND, &&、OR, ||、XOR| 函數 | 說明 | 範例 |
|---|---|---|
IFNULL(expr1, expr2) | expr1 非 NULL 回 expr1,否則回 expr2 | IFNULL(NULL, 'N/A') → 'N/A' |
NULLIF(expr1, expr2) | 相等回 NULL,否則回 expr1 | NULLIF(5,5) → NULL |
IF(expr1, expr2, expr3) | expr1 為真回 expr2,否則 expr3 | IF(score>60,'Pass','Fail') |
CASE WHEN ... THEN ... ELSE ... END | 多條件分支 | 見下方範例 |
SELECT CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE 'C'
END AS grade FROM students;
CONCAT(str1, str2, ...)、CONCAT_WS(sep, ...) 連接LENGTH() (位元組)、CHAR_LENGTH() (字元數)SUBSTRING(str, pos, len)、LEFT/RIGHT、MIDTRIM([BOTH|LEADING|TRAILING] remstr FROM str) 去除前後字元REPLACE(str, from, to) 替換LOCATE(substr, str[, pos])、INSTR(str, substr) 定位UPPER/LOWER、UCASE/LCASE 大小寫轉換REVERSE、REPEAT、SPACESOUNDEX 諧音比對QUOTE(str) SQL 轉義引用+, -, *, /, DIV (整除)、MOD/% (取餘)ABS()、正負號 SIGN()ROUND(X[,D])、FLOOR()、CEILING()、TRUNCATE(X,D)POW(X,Y)、SQRT(X)、EXP(X)LOG(X)、LOG10(X)、LOG2(X)、LN(X)SIN/COS/TAN、ASIN/ACOS/ATAN、COT、PI()RADIANS()、DEGREES()RAND([seed])LEAST()、GREATEST()| 函數 | 說明 | 範例 |
|---|---|---|
NOW() / SYSDATE() | 目前日期時間 | 2024-01-15 14:30:00 |
CURDATE() / CURTIME() | 目前日期/時間 | 2024-01-15 / 14:30:00 |
DATE_ADD(d, INTERVAL expr unit) | 日期加減 | DATE_ADD(NOW(), INTERVAL 1 DAY) |
DATEDIFF(d1, d2) | 天數差 | DATEDIFF('2024-01-15','2024-01-01') → 14 |
DATE_FORMAT(d, fmt) | 格式化輸出 | DATE_FORMAT(NOW(), '%Y-%m-%d') |
STR_TO_DATE(str, fmt) | 字串轉日期 | STR_TO_DATE('15/01/2024','%d/%m/%Y') |
DAYOFWEEK/WEEKDAY/MONTH/QUARTER/YEAR | 擷取日期部份 | MONTH('2024-01-15') → 1 |
LAST_DAY(d) | 該月最後一天 | LAST_DAY('2024-02-10') → 2024-02-29 |
UNIX_TIMESTAMP([d]) | 轉 Unix 時間戳 | UNIX_TIMESTAMP() → 1705312200 |
FROM_UNIXTIME(ts[, fmt]) | 時間戳轉日期 | FROM_UNIXTIME(1705312200) |
MD5(str)、SHA1(str)、SHA2(str, 256/512)、PASSWORD(str) (內部用)VERSION()、CONNECTION_ID()、DATABASE()、USER()、LAST_INSERT_ID()BENCHMARK(count, expr) 效能測試