2016-08-09 4 views
1

У меня есть следующий символ "column == 5", который я хочу перевести на sql: column = 5. Как мне это сделать?Перевести символьные команды на SQL с translate_sql()

я безуспешно пытался многочисленные способы, такие, как показано ниже:

translate_sql(eval(parse(text="column + 5"))) 

но translate_sql является «буквальным» среда, и это возвращает <SQL> EVAL(PARSE('column + 5' AS "text")).

Я знаю, что в этом есть какая-то трюк!

ответ

1

То, что вы называете «буквальной» средой, обычно называется функцией с нестандартной оценкой (NSE). В общем, есть несколько способов обойти их, но делает это проще, предоставляя совместителей стандартной оценки для всех функций NSE.

Форма стандартной оценки translate_sql называется translate_sql_:

translate_sql_("column + 5") 

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

translate_sql_(quote(column + 5)) 

В вашем случае нет большой разницы, но во многих случаях форма внизу является более полезной, так как это объект R, с которым можно манипулировать с помощью методов R. Манипулирование ввода строки, чтобы оно по-прежнему оставалось синтаксически правильным, намного сложнее (и, что неудивительно, менее эффективно).

Смежные вопросы