SQL 字串轉義

🔤 SQL String Escape

Escape SQL identifiers and string literals in your browser to prevent injection when building queries.

📐 工作原理與說明
SQL 字串轉義。
  • 規則:單引號通常寫作兩個單引號(''),MySQL 也支援反斜槓轉義(\')。
  • 重要:轉義不能替代引數化查詢(prepared statement)——後者才是防止 SQL 注入的根本手段。
  • 差異:不同資料庫的轉義規則不同,標準 SQL 用 '',MySQL 預設還支援 \。
  • 建議:優先使用帶引數繫結的查詢介面,僅在無法引數化時才考慮轉義。

📖 方言差異

MySQL: 單引號 → \' 反斜槓 → \\ NUL → \0

PostgreSQL: 單引號 → '' 不轉義反斜槓(預設)

SQL Server: 單引號 → '' 不轉義反斜槓

📚 深度解析:SQL 字串轉義

💡 常見使用場景

  • 拼 SQL 前轉義單引號,避免語法錯誤與注入(首選引數化查詢)。
  • 臨時排查問題時手工拼 SQL:把含單引號的值轉義後再拼,避免語法錯誤——但生產程式碼應改用引數化查詢。
轉義 O'Brien
輸入 `O'Brien` → 輸出 `O''Brien`(標準 SQL 用雙單引號轉義)。

❓ 常見問題(FAQ)

轉義能代替引數化查詢嗎?
不能,轉義只是兜底,引數化才是防注入正解。
為什麼轉義仍可能被繞過?
因為轉義依賴字元集與上下文:若連線使用了 GBK 等多位元組編碼,攻擊者可用特定多位元組序列「吃掉」你加的反斜槓從而逃逸引號;此外數字型引數不加引號時轉義完全無效。引數化查詢把資料與語句分開發給資料庫,從根本上不存在這類問題。
⚠️ 使用說明與注意事項
📖關於「SQL 字串轉義」 ▼

📝工具簡介

SQL 字串轉義。專為開發者打造的線上工具,純前端執行,程式碼不離開瀏覽器。