用于从 R 表达式生成 SQL 的低级构建块。字符串被转义;名称成为裸 SQL 标识符。用户中缀函数已删除%
。
细节
在包中使用sql_expr()
将需要使用globalVariables()
以避免R CMD check
注释。这是一点额外的痛苦,我认为这是值得的,因为它会带来更具可读性的翻译代码。
例子
con <- simulate_dbi() # not necessary when writing translations
sql_expr(f(x + 1), con = con)
#> <SQL> F(x + 1.0)
sql_expr(f("x", "y"), con = con)
#> <SQL> F('x', 'y')
sql_expr(f(x, y), con = con)
#> <SQL> F(x, y)
x <- ident("x")
sql_expr(f(!!x, y), con = con)
#> <SQL> F(`x`, y)
sql_expr(cast("x" %as% DECIMAL), con = con)
#> <SQL> CAST('x' AS DECIMAL)
sql_expr(round(x) %::% numeric, con = con)
#> <SQL> ROUND(x) :: numeric
sql_call2("+", quote(x), 1, con = con)
#> <SQL> x + 1.0
sql_call2("+", "x", 1, con = con)
#> <SQL> 'x' + 1.0
相关用法
- R dbplyr sql_query_insert 生成用于插入、更新、更新插入和删除的 SQL
- R dbplyr select.tbl_lazy 使用名称对列进行子集化、重命名和重新排序
- R dbplyr summarise.tbl_lazy 将每组汇总为一行
- R dbplyr backend-teradata 后端:Teradata
- R dbplyr escape 转义/引用字符串。
- R dbplyr expand.tbl_lazy 扩展 SQL 表以包含所有可能的值组合
- R dbplyr distinct.tbl_lazy 子集不同/唯一行
- R dbplyr backend-sqlite 后端:SQLite
- R dbplyr pivot_wider.tbl_lazy 将数据从长轴转向宽轴
- R dbplyr build_sql 构建 SQL 字符串。
- R dbplyr mutate.tbl_lazy 创建、修改和删除列
- R dbplyr collapse.tbl_sql 计算查询的结果
- R dbplyr get_returned_rows 提取并检查返回的行
- R dbplyr dbplyr_uncount “计数”数据库表
- R dbplyr count.tbl_lazy 按组计数观察值
- R dbplyr backend-odbc 后端:ODBC
- R dbplyr head.tbl_lazy 对第一行进行子集化
- R dbplyr db-quote SQL 转义/引用泛型
- R dbplyr copy_inline 在 dbplyr 查询中使用本地 DataFrame
- R dbplyr backend-oracle 后端:甲骨文
- R dbplyr backend-snowflake 后端:雪花
- R dbplyr lahman 缓存并检索 Lahman 棒球数据库的 src_sqlite。
- R dbplyr backend-redshift 后端:红移
- R dbplyr partial_eval 部分评估表达式。
- R dbplyr group_by.tbl_lazy 按一个或多个变量分组
注:本文由纯净天空筛选整理自Hadley Wickham等大神的英文原创作品 Generate SQL from R expressions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。