2014-08-27 29 views
0

在我認爲非常簡單的SQLite數據庫上,至少在我的條件下不起作用。SQL:以相同列值爲條件更新列值

我有一列名稱和一些名稱包含撇號('),我想要刪除。我知道所有包含撇號的名字,所以我不想查詢撇號。我正在做更簡單的事情:

UPDATE table SET column_name="name surname1 surname2" WHERE column_name="name surname1'surname2"; 

它不會返回我所期望的。它不會產生錯誤,但不會修改任何記錄。

SQL不喜歡反身性?

+1

這很常見,SQLite很喜歡它。如果沒有錯誤,它就起作用了。如果沒有記錄被更新,則沒有記錄匹配'column_name =「name surname1'surname2」',這當然是可能的。 – Rudie 2014-08-27 22:49:23

回答

0

查詢列的當前值以更新同一列應該沒有問題。嘗試通過加倍單引號來避免單引號''

參見:http://www.sqlite.org/lang_expr.html其內容爲:

字符串常量是通過在單引號 (')包圍的字符串形成。 字符串中的單引號可以通過將兩個 單引號連續放入來進行編碼 - 就像在Pascal中一樣。

因此,你的更新應該是:

UPDATE table SET column_name='name surname1 surname2' WHERE column_name='name surname1''surname2' 

更新:新增的逃逸機制的解釋。

+1

也許你應該明確地解釋*轉義*是通過加倍單引號完成的。 – 2014-08-27 22:49:17