RMySQL错误引用转义

时间:2011-08-17 08:37:15

标签: mysql r

我正在使用R和RMySQL库连接到Mysql数据库。

我看到他们的逃避功能存在问题:

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

这是错误的,应该是:"He\'\'LLO"

我是否必须使用其他函数来转义引号和双引号?

1 个答案:

答案 0 :(得分:4)

我认为您将打印的R表示与dbEscapeStrings()的实际结果混淆。在R \中也需要进行转义。因此,如果您想要文字\,则需要其中两个\\。这是R在打印时显示转义字符串的方式,并解释了观察到的行为:

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

但请注意,这只是在控制台的R中表示转义字符串的方式。如果我们将转义字符串cat()writeLines()发送到控制台,而不是print() - ing

> writeLines(foo)
HE\'\'LLO

我们发现它已被正确转义。后者是MySQL如何看待它。