首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 刪除數據報錯:字符串條件值必須加單引號

     編輯:程式設計疑難解答

錯誤現場

表 tv_play,字段 genre 類型 VARCHAR。執行:

DELETE FROM tv_play WHERE genre = Science Fiction;

報錯:Unknown column 'Science' in 'where clause' 或語法錯誤。

原因

MySQL 將無引號的 Science Fiction 解析為**兩個標識符**(列名或關鍵字),而非字符串字面值。空格導致解析器以為是 Science 列與 Fiction 關鍵字/列。

正確寫法

DELETE FROM tv_play WHERE genre = 'Science Fiction';
  • 單引號 包裹完整字符串值,含空格、特殊字符均安全。
  • 若值含單引號,需轉義:'Science\'s Best' 或雙引號模式 "Science's Best"(需 ANSI_QUOTES 模式關閉)。

通用原則

數據類型WHERE 條件寫法示例
字符串 (CHAR/VARCHAR/TEXT)單引號包裹WHERE name = 'abc'
日期/時間 (DATE/DATETIME)單引號包裹WHERE dt = '2023-01-01'
數值 (INT/DECIMAL/FLOAT)直接寫數字WHERE id = 100
NULLIS NULL / IS NOT NULLWHERE col IS NULL

最佳實踐:參數化查詢

-- Java (PreparedStatement)
String sql = "DELETE FROM tv_play WHERE genre = ?";
pst.setString(1, "Science Fiction"); // 自動處理引號、轉義、注入防護

-- Python (MySQLdb)
cursor.execute("DELETE FROM tv_play WHERE genre = %s", ("Science Fiction",))

總結

字符串、日期值在 SQL 中必須加單引號。genre = Science Fiction 缺引號導致語法解析錯誤。養成「值加引號、列加反引號」習慣,或直接用參數化查詢一勞永逸。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved