簡體   English   中英

在 SQL WHERE IN 語句中使用 R 中的字符串,該語句與 LIKE 語句有問題

[英]use character string in R inside SQL WHERE IN statement having issues with LIKE statement

我有一個類似於下面的查詢,我需要使用一串字符,它工作正常,但當我使用 LIKE 語句時不行。 請在下面進一步閱讀

ids
 [1] "0000000000000000010000001" "0000000000000000010000002" "0000000000000000010000003"
 [4] "0000000000000000010000004" "0000000000000000010000005" "0000000000000000010000006"
 [7] "0000000000000000010000007" "0000000000000000010000008" "0000000000000000010000009"
[10] "0000000000000000010000010"


expr1 <- sprintf("select
 FSAS.a_id,
 FSAS.grade,
 FSAS.score,
 FSAS.placement,
 FSAS.start,
 FSAS.completion 
 FROM db.Fact AS FSAS
   WHERE FSAS.a_id IN (%s)", paste0(sQuote(ids, q = FALSE), collapse=", "))

sqlQuery(con, expr1)

所以上面的代碼有效,但當我添加 LIKE 語句時,下面的代碼不起作用。 我想找到所有以 FR 開頭的展示位置,因此為什么要使用 LIKE 'FR%' 但我認為它會干擾 IN 語句。 我得到的錯誤是“參數太少”。 請問我該如何糾正這個問題?

ids
 [1] "0000000000000000010000001" "0000000000000000010000002" "0000000000000000010000003"
 [4] "0000000000000000010000004" "0000000000000000010000005" "0000000000000000010000006"
 [7] "0000000000000000010000007" "0000000000000000010000008" "0000000000000000010000009"
[10] "0000000000000000010000010"

expr1 <- sprintf("select
 FSAS.a_id,
 FSAS.grade,
 FSAS.score,
 FSAS.placement,
 FSAS.start,
 FSAS.completion 
 FROM db.Fact AS FSAS
   WHERE FSAS.a_id IN (%s) and FSAS.placement LIKE 'FR%'", paste0(sQuote(ids, q = FALSE), collapse=", "))

sqlQuery(con, expr1)

要獲得 sprintf 格式字符串中的文字 % ,請將其加倍。 toString 在這里也很有用。

s <- "select
 FSAS.a_id,
 FSAS.grade,
 FSAS.score,
 FSAS.placement,
 FSAS.start,
 FSAS.completion 
 FROM db.Fact AS FSAS
   WHERE FSAS.a_id IN (%s) and FSAS.placement LIKE 'FR%%'"

sprintf(s, toString(sQuote(ids, FALSE)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM