用於從 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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。