| sql {pkgutils} | R Documentation |
SELECT and UPDATE statementsHelper function converting R code into SQL
SELECT statements and data frames into
UPDATE statements.
sql(x, ...)
## S3 method for class 'data.frame'
sql(x, where, table,
set = setdiff(colnames(x), where), ...)
## S3 method for class 'formula'
sql(x, ...)
x |
Data frame or formula. |
where |
Character vector giving the name of the data frame and database table columns used to select rows. |
table |
Character scalar indicating the name of the database table to be updated. |
set |
Character vector giving the name of the data frame and database table columns to be updated. |
... |
Optional arguments passed between methods. |
The formula method saves some typing, particularly in the
case of complex queries, but it does not support joins.
R operators are mostly directly translated except for
those with the highest precedence. Infix operators are
translated literally. The control structures if
and function yield CASE constructs.
To use the data frame method to update a column, say,
"x" that is also used to select rows, include
"x" in the where argument and
"new.x" in the update argument.
Character vector.
Other coding-functions: L,
LL, assert,
case, check, collect,
contains, flatten,
listing, map_names,
map_values, must,
set, unnest
## formula method
x <- mytable(a, b, if (c1 > 15 | c2 == NULL) c1 else c2) ~
b < 69 & a %in% {"x"
"y"}
(y <- sql(x))
## [1] "SELECT a, b, CASE WHEN c1 > 15 OR c2 IS NULL THEN c1 ELSE c2 END FROM mytable WHERE b < 69 AND a IN ('x', 'y');"
stopifnot(is.character(y), length(y) == 1L)