Как использовать имя переменной в операторе SQL? - PullRequest
2 голосов
/ 02 февраля 2010

Я использую R для вызова оператора mySQL, где я определяю переменную вне оператора, например

foo = 23;
dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")

Но это возвращает пустой набор, я погуглил и попробовал '. & Foo.' ".Foo." ' "&& Foo."' и много разных комбинаций, но ни одна из них не работает, я думаю, что это должен быть вопрос mysql, а не специфическая проблема R, которая у меня есть, но я не уверен Обычно переменные имеют значения $, но не в R.

Ответы [ 5 ]

6 голосов
/ 02 февраля 2010

Это должно работать:

foo = 23;

sqlStatement <- paste("select surname from names WHERE age =",foo,'"',sep="")

dbGetQuery(con, sqlStatement;)
2 голосов
/ 02 февраля 2010

Возможно, вы захотите посмотреть на ответы на этот вопрос: Можно ли изящно включить отформатированные строки SQL в сценарий R? .

Самое простое решение - использовать команду paste, как предложил Роберт.

1 голос
/ 13 мая 2015

Принятый ответ дает плохой совет, который делает ваше приложение уязвимым для SQL-инъекций. Вы должны всегда использовать переменные связывания вместо объединения значений непосредственно в ваш запрос. Используйте метод dbGetPreparedQUery, как описано в этом ответе: Связывание переменных в R DBI

0 голосов
/ 02 февраля 2010

AFAIK команда должна быть строкой, поэтому вы должны добавить отдельные компоненты. Не будучи знакомым с R, я не могу вам помочь, КАК это сделать. В MS-VBA оператор объединения строк - '&'.

0 голосов
/ 02 февраля 2010

Добавление точки с запятой в конце запроса иногда создает проблему. Попробуйте изменить свой запрос с:

dbGetQuery(con, "select surname from names WHERE age = '.foo.' ;")

до:

dbGetQuery(con, "select surname from names WHERE age = '.foo.'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...