RMySQL добавляет пробелы в запрос, что приводит к сбою

Я пытаюсь запустить запрос MySQL, используя RMySQL, который включает LIKE и пользовательскую переменную внутри запроса.

Вот пример моего запроса

customvar= 'some text'
(simpleQuery<-paste("SELECT * FROM `table` WHERE NameOfField like '%",customvar,"%'")) 
res<-dbGetQuery(con, simpleQuery)

Дело в том, что simpleQuery почему-то так интерпретирует запрос

[1] "SELECT * FROM `table` WHERE NameOfField '% some text %'"

Обратите внимание на пробелы до и после some text, которые мешают моему запросу получить правильные результаты.

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

Любая идея обойти эту проблему?

Версии: R 2.14.0 / RMySQL 0.8

заранее спасибо


person JordanBelf    schedule 14.01.2012    source источник


Ответы (2)


По умолчанию в paste используется sep=' ' (пробел), но вы, вероятно, имели в виду sep='' (пустая строка). В недавнем R вместо этого можно использовать paste0.

person Simon Urbanek    schedule 14.01.2012
comment
Спасибо за быстрый ответ, похоже, paste0 доступен только в версии R для разработчиков, так как я не могу найти функцию paste0 в R 2.14, я попытаюсь установить версию для разработчиков и проверить, решает ли это проблему. Еще раз спасибо за быструю помощь! - person JordanBelf; 15.01.2012
comment
моя вина! похоже, что текущая версия R — 2.14.1! Я проверю это сейчас - person JordanBelf; 15.01.2012
comment
Для всех, кто читает этот пост, похоже, что paste0 недоступен и в R 2.14.1, но я заметил, что sep — это аргумент, который вы можете использовать с paste точно так же, как это sep="" - person JordanBelf; 15.01.2012
comment
paste0 уже много лет доступен в пакете gsubfn. - person G. Grothendieck; 15.01.2012

Вы получаете gsubfn и решаете эту проблему, делая это в командной строке (не в R):

wget http://cran.r-project.org/src/contrib/Archive/gsubfn/gsubfn_0.5-7.tar.gz
rm gsubfn_0.6-3.tar.gz

Это устанавливает версию gsubfn, совместимую с 2.14.

person Mark Butler    schedule 08.12.2013