看到這張圖的第一個反應是「頭皮發麻」,系統被入侵,到底發生什麼事?再看看日期欄位。
文章目錄
備份資料庫
直接在生產環境的數據庫上運行 DELETE 語句可能非常危險,因為一旦執行,被刪除的數據將無法恢復。
在執行這樣的操作之前,強烈建議先進行備份,或者先使用 SELECT 語句進行測試,以確保你的查詢條件是正確的。
清理資料
因為這個欄位只能接受的是Email格式
可以先找出非Email格式,簡單說就是找出不包含 @ ,也就是不是電子郵件的
1 |
WHERE `email` NOT LIKE '%@%' |
查詢發生錯誤 (1064): Syntax error near ‘WHERE email
NOT LIKE ‘%@%” at line 2
收到錯誤訊息 1064 通常意味著 SQL 語法有誤。基於您提供的錯誤訊息,問題看起來似乎出在 SQL 查詢的引號使用上。如果您是直接從此對話中複製粘貼的 SQL 查詢,可能是因為引號在轉換過程中被錯誤解釋或格式化。在 SQL 查詢中正確使用引號非常重要,特別是在包含像 %@% 這樣的模式匹配時。
REGEXP
1 |
WHERE `email` NOT REGEXP '@'; |
1 2 |
DELETE FROM `student` WHERE `email` NOT REGEXP '@'; |
順利刪除。
後續加強
僅憑 @ 符號的存在與否來判斷一個字符串是否為有效的電子郵件地址可能不夠準確。電子郵件地址的有效性檢查通常涉及更複雜的規則,包括但不限於特定格式和域名的檢查。然而,對於基本篩選,這樣的 SQL 查詢是一個很好的起點。