首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

從 MSSQL 遷移 MySQL 語法差異全對比 (五):運算符、正則、位運算與特殊字元

     編輯:MySQL 綜合教學

一、比較運算符

1.1 安全等於 <=> (MySQL 獨有)

運算式結果說明
NULL <=> NULL1 (TRUE)等值比較,NULL 視為相等
1 <=> NULL0 (FALSE)非 NULL vs NULL 不等
1 <=> 11普通等值
1 = NULLNULL標準 SQL:任何與 NULL 比較結果為 NULL

用途:WHERE col <=> val 可直接匹配 NULL,無需 IS NULL 分支。

1.2 LEAST / GREATEST (多值極值)

SELECT LEAST(2, 0);           -- 0
SELECT LEAST('a', 'b', 'c');  -- 'a' (字典序最小)
SELECT LEAST(10, NULL);       -- NULL (任一參數為 NULL 結果為 NULL)

SELECT GREATEST(2, 0);        -- 2
SELECT GREATEST('a', 'b');    -- 'b'
SELECT GREATEST(10, NULL);    -- NULL

MSSQL 無對應函數,需用 CASE 或 IIF 模擬。

二、正則表達式 REGEXP (MySQL 獨有)

MSSQL 無內建正則 (需 CLR 整合),MySQL 原生支援。

常用元字符

實測範例

SELECT 'ssky' REGEXP '^s';      -- 1 (以 s 開頭)
SELECT 'ssky' REGEXP 'y$';      -- 1 (以 y 結尾)
SELECT 'ssky' REGEXP '.sky';    -- 1 (任意字元 + sky)
SELECT 'ssky' REGEXP '[ab]';    -- 0 (不含 a 或 b)

三、邏輯運算符擴展

符號含義範例匹配
^行首'abc' REGEXP '^a' → 1
$行尾'abc' REGEXP 'c$' → 1
.任意單字元'abc' REGEXP '.bc' → 1
[...]字元集合'abc' REGEXP '[ab]' → 1
[^...]排除集合'abc' REGEXP '[^ab]' → 1 (匹配 c)
|或'abc' REGEXP 'ab|xy' → 1
*零或多次'abc' REGEXP 'ab*c' → 1 (匹配 a, 0個b, c)
+一次或多次'abc' REGEXP 'ab+c' → 1 (至少1個b)
{n}恰好 n 次'aaa' REGEXP 'a{3}' → 1
{m,n}m 到 n 次'ab' REGEXP 'ab{1,3}' → 1

XOR 真值表

SELECT 1 XOR 1;   -- 0 (真真假)
SELECT 0 XOR 0;   -- 0 (假假假)
SELECT 1 XOR 0;   -- 1 (真假真)
SELECT 1 XOR NULL; -- NULL
SELECT 1 XOR 1 XOR 1; -- 1 (左結合: (1 XOR 1) XOR 1 = 0 XOR 1 = 1)

四、位運算符 (MySQL 獨有,MSSQL 無)

運算符MSSQLMySQL備註
ANDANDAND / &&MySQL 支援 &&
OROROR / ||MySQL 支援 || (需 PIPES_AS_CONCAT OFF)
XOR無XOR異或:單真為真
NOTNOTNOT / !MySQL 支援 !

輔助函數:BIN(10) → '1010' 查看二進制表示。

五、特殊字元轉義對比

運算符含義範例結果
|位或5 | 37 (101 | 011 = 111)
&位與5 & 31 (101 & 011 = 001)
^位異或5 ^ 36 (101 ^ 011 = 110)
<<左移5 << 110 (1010)
>>右移5 >> 12 (10)
~位取反~5-6 (補碼)

插入單引號實測

-- MySQL
INSERT INTO t1(name) VALUES('\'');  -- 成功
SELECT * FROM t1; -- '

-- MSSQL
INSERT INTO t1(name) VALUES('''');  -- 成功
SELECT * FROM t1; -- '

總結遷移對照

字元MySQL 轉義MSSQL 轉義
單引號 '\''' (雙單引號)
雙引號 "\"""
反斜線 \\\\ (通常不需轉義)
換行\nCHAR(10) 或字串常值換行
製表符\tCHAR(9)
回車\rCHAR(13)
退格\bCHAR(8)
MSSQLMySQL備註
col = NULL (錯誤寫法)col IS NULL / col <=> NULLMySQL 推薦 <=>
CASE WHEN ... 求極值LEAST/GREATESTMySQL 簡潔
CLR 正則REGEXPMySQL 原生
無位運算& | ^ << >> ~MySQL 位運算完整
'' 轉義單引號\'轉義字元不同
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved