当我将值传递到sql中的in运算符中时,我有这样的查询:
将
ants = data.frame(mainbroca[,9:13]) ac_pvals = vector() ap_pvals = vector() sc_pvals = vector() sp_pvals = vector() for(i in 1:ncol(ants)){ bootstrap_ttest(data1=mainbroca$Attack_count[ants[,i] == 0], data2=longbroca$Attack_count[ants[,i]>0], resamples=1000) ac_pvals = c(ac_pvals, pvalue) bootstrap_ttest(data1=mainbroca$Attack_percent[ants[,i] == 0], data2=longbroca$Attack_percent[ants[,i]>0], resamples=1000) ap_pvals = c(ap_pvals, pvalue) bootstrap_ttest(data1=mainbroca$Survival_count[ants[,i] == 0], data2=longbroca$Survival_count[ants[,i]>0], resamples=1000) sc_pvals = c(sc_pvals, pvalue) bootstrap_ttest(data1=mainbroca$Survival_percent[ants[,i] == 0], data2=longbroca$Survival_percent[ants[,i]>0], resamples=1000) sp_pvals = c(sp_pvals, pvalue) }
值'3,4,9'转换为数据类型varchar
时转换失败
我该如何解决这个问题?
int.
答案 0 :(得分:2)
不。您可以使用string_split()
或类似的用户定义函数:
where itemtypeid in (select try_convert(int, value) from string_split(@values))
答案 1 :(得分:1)
我通常要做的是使用表变量,像这样:
DECLARE @values TABLE (id INT)
INSERT INTO @values (id) VALUES (3),(4),(9)
SELECT id FROM @values
由此,您可以简单地对表进行联接。
如果要创建StoredProc,则可以使用TVP传递参数here is the Microsoft doc on that。使用TVP,您的代码可以简单地通过列表调用SP,然后可以将其加入SP。
希望这会有所帮助。