2011-08-17 61 views
2

我使用R與RMySQL庫連接到Mysql數據庫。RMySQL錯誤報價轉義

我看到有一個與他們避開功能的一個問題:

> dbEscapeStrings(con, "HE''LLO") 
[1] "HE\\'\\'LLO" 

這是錯誤的,它應該是:"He\'\'LLO"

我一定要使用另一個函數逃脫引號和雙引號?

回答

4

我認爲你錯誤地認爲打印的R表示與dbEscapeStrings()的實際結果有誤。在R \也需要逃脫。所以如果你想要一個文字\,你需要兩個\\。這是怎樣的轉義字符串由R打印時顯示並解釋所觀察到的行爲:

> foo <- dbEscapeStrings(con, "HE''LLO") 
> foo 
[1] "HE\\'\\'LLO" 

但是,請注意,這只是逃脫串在控制檯R內部表示方式。如果我們cat()writeLines()的轉義字符串到控制檯,而不是print() -ing

> writeLines(foo) 
HE\'\'LLO 

我們看到它已經被正確轉義。後者是MySQL如何看待它。