2016-07-20 3 views
1

그래서 "\"이 내 영혼을 분쇄하고 있습니다. 일부 이상한 문자열 이스케이프가 필요한 RMySQL 쿼리를 작업하고 있어요 및 붙여 넣기의 오른쪽 호출을 찾을 수 없습니다.R 쿼리 문자열의 백 슬래시 문제

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은 동일한 고양이를하지 않습니까?