下面的代码是抛出错误
declare @test varchar(100)='20,201,202,288' SELECT * from Business where Businessid in (@test)
i、 e.将varchar值“20201202288”转换为数据类型int时,转换失败。我怎么能让它工作,我不明白,可能是我的大脑不能再思考了。。
2w3rbyxf1#
你可以用 string_split() :
string_split()
select * from Business where Businessid in (select value from string_split(@test, ','));
将字符串与表中的值列表混淆 in 列表。他们不是一回事。
in
mbzjlibv2#
我们可以用 string_split 在 SQL Server 2016 and later versions 只有这样,我才能选择更灵活的任何版本的动态查询
string_split
SQL Server 2016 and later versions
DECLARE @test VARCHAR(100) = '20,201,202,288', @sql VARCHAR(250) SET @sql = ' SELECT * FROM Business WHERE Businessid IN (' + @test + ')' EXEC(@sql)
2条答案
按热度按时间2w3rbyxf1#
你可以用
string_split()
:将字符串与表中的值列表混淆
in
列表。他们不是一回事。mbzjlibv2#
我们可以用
string_split
在SQL Server 2016 and later versions
只有这样,我才能选择更灵活的任何版本的动态查询