MySQL 擁有多個 SQL Server 不支援的特有運算符,掌握它們能寫出更簡潔、高效的 SQL。本文逐一實測解析。
<=>=,但可正確比較 NULL。NULL <=> NULL → 1 (true);NULL <=> 非NULL → 0 (false);非NULL <=> 非NULL → 同 =。WHERE col <=> @param 替代 WHERE (col = @param OR (col IS NULL AND @param IS NULL))。SELECT LEAST(10, 5, 20); -- 5
SELECT GREATEST('b', 'a', 'c'); -- 'c' (字典序)
SELECT LEAST(1, NULL); -- NULL (任一參數為 NULL 結果為 NULL)
COALESCE 兜底。'sky' REGEXP '^s'; -- 1 (以 s 開頭)
'sky' REGEXP 'y$'; -- 1 (以 y 結尾)
'sky' REGEXP '.ky'; -- 1 (任意單字符 + ky)
'sky' REGEXP '[ab]'; -- 0 (不含 a 或 b)
'sky' REGEXP '[a-z]'; -- 1 (含小寫字母)
^ $ . [range] * + ? {n,m} | (group)。LIKE 低,大表慎用或建立全文索引。| A | B | A XOR B |
|---|---|---|
| 1 | 1 | 0 |
| 0 | 0 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| NULL | 1 | NULL |
(A AND NOT B) OR (NOT A AND B)。SELECT 5 | 3; -- 7 (按位或)
SELECT 5 & 3; -- 1 (按位與)
SELECT 5 ^ 3; -- 6 (按位異或)
SELECT 5 << 1; -- 10 (左移)
SELECT 5 >> 1; -- 2 (右移)
SELECT ~5; -- -6 (按位取反,補碼)
BIN() 查看二進制:SELECT BIN(20); -- 10100。| 字符 | 轉義寫法 |
|---|---|
| 單引號 | \' |
| 雙引號 | \" |
| 反斜槓 | \\ |
| 回車 | \r |
| 換行 | \n |
| 製表 | \t |
| 退格 | \b |
SQL Server 使用雙單引號 '' 表示單引號,MySQL 僅支援反斜槓轉義(或 NO_BACKSLASH_ESCAPES SQL 模式下雙單引號)。
INSERT INTO `articles` (`title`, `content`) VALUES
('O\'Reilly', 'Line1\nLine2\tTabbed');