создать пользовательскую фразу WHERE SQL в r - PullRequest
1 голос
/ 23 апреля 2020

Я использую RODBC для подключения к базе данных. Я хотел бы, чтобы пользователь мог определять подстановочные строки для поиска в SQL как часть функции. Я не могу использовать CONTAINS, так как база данных не индексируется в полнотекстовом формате.

SQL Я хочу создать:

"SELECT *
FROM mydataTable
WHERE (ItemNM LIKE '%CT%' OR ItemNM LIKE '%MRI%' OR ItemNM LIKE '%US%')"

Пользователь должен иметь возможность определять столько символов подстановки, сколько они как, все из поля ItemNM и все разделены OR.

myLookup<-function(userdefined){

  paste0("SELECT *
FROM mydataTable
WHERE ( LIKE '",userdefined,"')")


}

Если я векторизирую пользовательское определение (ie userdefined<-c("US","MRI")), то получаю отдельные строки SQL, что не годится. Как я могу получить выходные данные, как указано выше, но для любой длины определенной пользователем строки, где они просто определяют подстановочный знак?

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Мы можем использовать glue

library(glue)
mylookup <- function(userdefined){
   as.character(glue('SELECT * FROM mydataTable WHERE (', 
      glue_collapse(glue("ItemNM LIKE '%{userdefined}%'"), sep=" OR "), ')'))

  }

mylookup(userdefined)
#[1] "SELECT * FROM mydataTable WHERE (ItemNM LIKE '%US%' OR ItemNM LIKE '%MRI%')"
1 голос
/ 23 апреля 2020

Вы можете использовать:

myLookup <- function(userdefined) {
   paste0('SELECT * FROM mydataTable WHERE (', 
       paste0('ITENM LIKE %', userdefined, '%', collapse = " OR "), ')')
}

userdefined<-c("US","MRI")
myLookup(userdefined)
#[1] "SELECT * FROM mydataTable WHERE (ITENM LIKE %US% OR ITENM LIKE %MRI%)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...