2011-08-17 12 views
2

私はMysqlデータベースに接続するRMySQLライブラリとRを使用しています。私は彼らのエスケープ機能に問題がある見ているRMySQL間違った引用符でエスケープ

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

これは間違っている、それは次のようになります。"He\'\'LLO"

は、私は引用符と二重引用符をエスケープするために別の関数を使用する必要がありますか?

答えて

4

実際の結果である印刷されたR表現をdbEscapeStrings()と間違えていると思います。 R \でもエスケープする必要があります。だから、文字通り\が必要な場合は、そのうちの2つが\\である必要があります。

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

しかし、これは単にコンソールでRの中に表現された文字列をエスケープの方法であることに注意してください。これは、エスケープされた文字列を印刷するときにRで表示され、観察された挙動を説明している方法です。我々cat()またはwriteLines()コンソールにエスケープされた文字列の代わりに、print() -ing

> writeLines(foo) 
HE\'\'LLO 

場合我々はそれが適切にエスケープされていることがわかります。後者は、MySQLがどのように見えるかです。