首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 表達式操作符與類型轉換完整手冊

     編輯:MySQL 資料庫相關知識

操作符分類詳解

1. 算術操作符

操作符語法含義
+a + b相加
-a - b相減
--a取負值
*a * b乘法
/a / b除法
%a % b取餘(模運算)

2. 邏輯操作符

操作符語法含義
AND / &&a AND b邏輯與:兩操作數均真才為真
OR / ||a OR b邏輯或:至少一真即為真
XORa XOR b邏輯異或:有且僅有一真為真
NOT / !NOT a邏輯非:假變真,真變假

注意:MySQL 中邏輯運算結果為 1(真)、0(假)或 NULL。

3. 位操作符

操作符語法含義
&a & b按位與
|a | b按位或
^a ^ b按位異或
<<a << b左移 b 位
>>a >> b右移 b 位

4. 比較操作符

操作符語法含義
=a = b相等
<=>a <=> b安全相等(可比較 NULL)
!= / <>a != b不相等
< / <= / > / >=a < b大小比較
INa IN (...)在列表中
BETWEENa BETWEEN b AND c範圍內(含邊界)
LIKEa LIKE b模式匹配(% 任意字符,_ 單字符)
REGEXP / RLIKEa REGEXP b正則表達式匹配
IS NULL / IS NOT NULLa IS NULL空值判斷

LIKE 大小寫敏感性:默認不區分大小寫(取決於字符集校對規則),二進制字符串或 BINARY 關鍵字可強制區分。

5. 操作符優先級(高到低)

BINARY, COLLATE
NOT, !
^
XOR
- (一元負號), ~ (一元取反)
*, /, %
+, -
<<, >>
&
|
<, <=, =, <=>, !=, <>, >=, >, IN, IS, LIKE, REGEXP, RLIKE
BETWEEN, CASE, WHEN, THEN, ELSE
AND, &&
OR, ||
:= (賦值)

建議:複雜表達式顯式使用括號,避免優先級誤解導致邏輯錯誤。

隱式類型轉換規則

MySQL 根據上下文自動轉換數據類型:

數字與字符串互轉

SELECT 1 + '2';     -- 3  (字符串 '2' 轉為數字 2)
SELECT 1 + 'abc';   -- 1  (非數字字符串轉為 0)

日期時間轉換

字符串/數字可自動轉為 DATE/DATETIME/TIME,格式需符合 YYYY-MM-DD、YYYY-MM-DD HH:MM:SS 等標準格式。

超範圍與非法值處理

  • 數值超出列類型範圍 → 截斷至邊界值並產生警告。
  • 非法日期(如 '2023-02-30') → 轉為零值('0000-00-00')並警告。
  • 可通過 SHOW WARNINGS 捕獲轉換警告。

最佳實踐

  1. 顯式轉換優於隱式:使用 CAST()、CONVERT() 明確指定目標類型,提升代碼可讀性與可移植性。
  2. 避免字符串與數字混合運算:在 WHERE 條件中,字符串列比較數字會導致全表掃描(索引失效)。
  3. 統一字符集與校對規則:庫、表、列、連接字符集保持一致,避免隱式字符集轉換開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved