2015-12-03 50 views
-1

我想比較mysql的兩個表檢索數據時,忽略quoutes,一切工作正常,直到我的Python腳本想要檢索「名稱」時間」如何從MySQL表

錯誤消息是類似的東西來:

pymysql.err.ProgrammingError: (1064, u'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \ald"time" AND something = "Donald"time" UNION SELECT id FROM table1 WHERE something' at line 1') 

我的MySQL一句話是這樣的:

SELECT id FROM table1 WHERE something = "Donald"time" 

我知道我可以不理會「帶花樣繁多但不幸的是,我不知道引號的位置SIM卡一層插入一個逃逸序列。

感謝

回答

1

像這樣與\逃生:

create table a 
( id int auto_increment primary key, 
    b varchar(100) not null 
); 

insert a(b) values ('aabbcc'),('fish\"tonite'); 

SELECT id FROM a WHERE b = "fish\"tonite"; 
+----+ 
| id | 
+----+ 
| 2 | 
+----+ 

MySQL手冊頁Here含有一些轉義序列信息。

+0

謝謝@Drew,當你知道引號的位置時,解決方案就可以工作,但是當你不知道這個工作怎麼可能? – Gon

+0

恐怕你失去了我。解析它並找到它?我只是展示如何插入,以及如何知道它在那裏。你需要解析和楔入轉義序列。把它變成一個字符串。並在你的where子句中使用 – Drew

+0

假設你有一個字符串:'AFAFEIVUDFA'。假設這些佔位符中的任何一個實際上可以是雙引號符號。你需要解析它,並在每個雙引號之前加上一個'\'(解釋它)。現在你有第二個字符串。你在where子句中使用它 – Drew