r语言 - 在LIKE语句中包含多个关键字的SQL语句



我正试图从同一列中提取基于多个关键字的数据。

目前我有一个SQL语句是这样工作的。

SELECT * 
FROM Customers
WHERE CustomerName LIKE 'a%'
OR CustomerName LIKE '_r%'
OR CustomerName LIKE 'si%';

很好。我想要实现的是传递关键字c("a", "_r", "si")作为矢量。这样的:

keywords <- c("a", "_r", "si")
SELECT * 
FROM Customers
WHERE CustomerName LIKE '%' + keywords + '%';

这不起作用。我如何提交一个变量与一堆关键字到类似的声明?

使用sprintfpaste/collapse=。在sprintf格式中,%s被替换为下一个参数,%%表示%。

keywords <- c("a", "_r", "si")
sql <- keywords |>
sprintf(fmt = "CustomerName LIKE '%%%s%%'") |>
paste(collapse = " OR n") |>
sprintf(fmt = "SELECT *
FROM Customers
WHERE %s")
cat(sql, "n")

给:

SELECT *
FROM Customers
WHERE CustomerName LIKE '%a%' OR 
CustomerName LIKE '%_r%' OR 
CustomerName LIKE '%si%' 

只是使用string_split()JOIN的另一个选项

DECLARE @Find VARCHAR(max) = ('a%,_r%,si%')
Select Distinct A.* 
From Customers A
Join string_split(@Find,',') B
on CustomerName like B.value

最新更新