Проблемы с обратной косой чертой в строке запроса R

Итак, "\", душит мою душу. Я работаю над запросом для RMySQL для этого нужны странные экранированные строки, и я не могу найти правильный вызов paste.

query <- 'CALL `storedprocX`(1, 30, "\'xyz-f43\', \'1002\'")'

Мои попытки до сих пор были близки, но я не могу получить буквальную обратную косую черту в нужном месте.

ids <- c("xyz-f43","1002")
x <- 1
y <- 30

paste0('CALL `storedprocX`(',x,',',y,paste0(" \\'",ids,"\\'",collapse = ","),')')

Кто-нибудь имеет опыт работы с этим?

1 ответ

Решение

Я не знаком с RMySQL, но разве движок SQL не позаботится о выходе из него?

> esc.ids = paste(sprintf("\\'%s\\'", ids), collapse = ", ")
> esc.ids = paste0("\"", esc.ids, "\"", collapse = "")
> my.q = paste0("'CALL `storedprocX`(1, 30, ", esc.ids, ")'", collapse = "")
> cat(my.q)
'CALL `storedprocX`(1, 30, "\'xyz-f43\', \'1002\'")'
> nchar(my.q)
[1] 52

Разве SQL не делает то же самое, что делает кот здесь?

Другие вопросы по тегам