| 風格 | 語法 | 說明 |
|---|---|---|
| SQL 標準 | MySQL 3.23.3+ 支援,**要求雙減號後緊跟一個空格或控制字元(換行)**。 | |
| MySQL 原生 | 行尾註釋,無特殊要求。 | |
| C 風格 | 多行註釋,可嵌套在 SQL 語句中間。 |
防止自動生成 SQL 時出現語義變更。例:
UPDATE account SET credit = credit - !payment!;
-- 若 payment = -1,自動替換後變為:
UPDATE account SET credit = credit --1;
若 `--1` 被視為註釋開始,語句變為 UPDATE account SET credit = credit,**不再扣款**,造成嚴重邏輯錯誤。強制空格使 `--1` 仍被視為減法運算,保證語義安全。
replace 工具轉為 `#` 後再餵給 mysql:replace " --" " #" < script.sql | mysql db_nameSELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM t;(優化器提示)。