Запрос с переменными RMySQL

0

Я попробовал этот скрипт выбрать поле в таблице с помощью RMySQL:

mydb <- dbConnect(MySQL(), dbname="***", user='***',host='***')
a<-29553
b<-31097
c<-'chr1'
s<-'+'
res<-dbSendQuery(mydb, "SELECT name FROM wgEncodeGencodeBasicV27 WHERE 
chrom=c AND strand=s AND txStart=a AND txEnd=b")

но он возвращает ошибку: "Неизвестный столбец" c "в" where clause ". Зачем? Как исправить скрипт?

  • 0
    Вы уточните, что означает "не работает"? Вы получаете ошибку, и если да, то что это?
  • 2
    К вашему сведению, вы не должны включать реальную информацию для входа в свой вопрос. Ваш сервер может быть взломан.
Показать ещё 2 комментария
Теги:

1 ответ

0

В принципе, идея состоит в том, что вы можете динамически подготовить свой query с помощью переменных. Это отнимает необходимость отправлять переменные как параметр отдельно. sprintf подходит для этой цели.

Возьмем случай из OP. Подход должен быть:

#Variables to be used in query
a<-29553
b<-31097
c<-'chr1'
s<-'+'

library(RMySQL)

mydb <- dbConnect(MySQL(), dbname="***", user='***',host='***')

#Prepare a query format string with place holders for variables. 
queryFormat <- "SELECT name FROM wgEncodeGencodeBasicV27 
WHERE chrom='%s' AND strand='%s' AND txStart=%d AND txEnd=%d"

#Use sprintf to prepare the query
query <- sprintf(queryFormat, c, s, a, b)

res<-dbSendQuery(mydb, query)

#The final query which has been send to Database:
#[1] "SELECT name FROM wgEncodeGencodeBasicV27 
# WHERE chrom='chr1' AND strand='+' AND txStart=29553 AND txEnd=31097"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню