我试着用这样的代码
declare @Class varchar(20)
set @Class = '4,6,8'
select
case when @Class in (1, 2)
then 1
else 0
end
或
Select
case when '4,6,8' in (1,2)
then 1
else 0
end
这将返回一个错误
将varchar值“4,6,8”转换为int数据类型时转换失败。
有没有办法在case when子句中使用这个拆分数字?
更新:实际上我在C#代码中使用了这段代码
private string Class()
{
if (this.RdFac.Checked)
{
return "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18";
}
else
{
if (this.CmbBrClass.SelectedValue.ToString() == "12")
{
return "12,16,18";
}
}
}
private void ShwoResults_Click(object sender, EventArgs e)
{
dataTable = @"select
case when "+Class()+" in (1, 2)
then 1
else 0
end"
}
4条答案
按热度按时间vaqhlq811#
你可以试试这个...
在SQL Server 2012以下版本中:-
或
对于SQL Server 2012及更高版本:-
为了比较你的
int
值,首先你需要把你的字符串分成rows
中的各个int
值。然后只有你可以在给定的条件下检查它们。尽管
in (1,2)
在此查询中仍然是静态的。bpsygsoo2#
错误您正在尝试比较int和varchar
这应该对你有用
afdcj2ne3#
TRY:如果没有更多值可供比较,以下是即时解决方案
--如果有值
--如果是变量
uplii1fm4#