有什么办法可以将varchar转换为sql中的int值?

时间:2019-11-19 16:22:45

标签: sql sql-server tsql

当我将值传递到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.

2 个答案:

答案 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。

希望这会有所帮助。