mysql查詢使用--註解踩到的雷
Contents
從 DB2 切換到 MySQL 時,常見的踩雷點之一就是 -- 註解的行為不同。這篇說明 MySQL 的三種註解方式與使用注意事項。
MySQL 的三種註解方式
1. # 單行註解
|
|
# 是 MySQL 特有的語法,不屬於 SQL 標準,其他資料庫(如 DB2、PostgreSQL)不支援。
2. /* */ 多行區塊註解
|
|
這是標準 SQL 語法,所有主流資料庫都支援,也可以用在行中間。
3. -- 單行註解(需要後接空格)
|
|
⚠️ 重要:MySQL 要求 -- 後面至少要有一個空格(或 Tab、換行),否則不會被視為註解。
|
|
為何 -- 需要空格?
根據 SQL 標準(SQL-99),-- 後面接空格才是合法的行內註解語法。MySQL 嚴格遵守這個規定,主要原因是避免與數字運算的負號混淆。例如:
|
|
DB2、Oracle 和 SQL Server 的實作通常更寬鬆,不強制要求空格,所以從這些資料庫切換到 MySQL 容易踩雷。
各種場景的使用建議
在 Stored Procedure 中
|
|
在一般查詢中臨時停用條件
|
|
跨資料庫移植建議
如果 SQL 需要跨不同資料庫(MySQL、DB2、PostgreSQL),建議統一使用 /* */ 或 -- (含空格)以確保相容性,避免使用 MySQL 特有的 # 語法。
三種註解方式比較
| 語法 | 類型 | SQL 標準 | 跨資料庫相容 | 注意事項 |
|---|---|---|---|---|
# |
單行 | 否(MySQL 特有) | 否 | 簡單方便 |
/* */ |
多行區塊 | 是 | 是 | 最通用 |
-- |
單行 | 是 | 是(含空格) | 後面必須有空格 |