如何在其中一个参数中使用 CASE 表达式创建 SQL 命令?
How create SQL command with CASE expression in one of parameters?
我想在位于 OLE DB 命令中的 SqlCommand
中创建一个 SQL 查询,以从文件 txt 更新现有数据库,并且一个信息依赖于另一个。例如,如果我有 decision=non
我将有 somme=0 else somme=(I add five values)
当我像 somme=0
或 somme=val_1+val_2+val_3+val_4+val_5
这样没有大小写表达式的情况下手动添加数据时它起作用了。
UPDATE [TP1].[dbo].[Data]
SET nom=?, val_1=?, val_2 =?, val_3=?, val_4=?, val_5=?, decision=?,
somme= (CASE
WHEN (STRCMP(decision,"NON") < 1)
THEN 0
ELSE (val_1 + val_2 + val_3 + val_4 + val_5)
END)
WHERE (numero = ?)
您看到想要命名您的参数,您可以在 values()
子句中这样做:
update d
SET nom = v.nom,
val_1 = v.val_1,
val_2 = v.val_2,
val_3 = v.val_3,
val_4 = v.val_4,
val_5 = v.val_5,
decision = v.decision,
somme = (case when d.decision like '%NON%'
then v.val_1 + v.val_2 + v.val_3 + v.val_4 + v.val_5
else 0
end)
from [TP1].[dbo].[Data] d cross join
(values (?, ?, ?, ?, ?, ?, ?)
) v(val_1, val_2, val_3, val_4, val_5, decision, numero)
where d.numero = v.numero;
您也可以将它们作为命名参数传入。
您可能会发现让 somme
成为计算列更容易。然后它总是最新的。您将删除当前定义,然后将计算列添加为:
alter table [TP1].[dbo].[Data] add somme as
(case when d.decision like '%NON%'
then val_1 + val_2 + val_3 + val_4 + val_5
else 0
end);
我想在位于 OLE DB 命令中的 SqlCommand
中创建一个 SQL 查询,以从文件 txt 更新现有数据库,并且一个信息依赖于另一个。例如,如果我有 decision=non
我将有 somme=0 else somme=(I add five values)
当我像 somme=0
或 somme=val_1+val_2+val_3+val_4+val_5
这样没有大小写表达式的情况下手动添加数据时它起作用了。
UPDATE [TP1].[dbo].[Data]
SET nom=?, val_1=?, val_2 =?, val_3=?, val_4=?, val_5=?, decision=?,
somme= (CASE
WHEN (STRCMP(decision,"NON") < 1)
THEN 0
ELSE (val_1 + val_2 + val_3 + val_4 + val_5)
END)
WHERE (numero = ?)
您看到想要命名您的参数,您可以在 values()
子句中这样做:
update d
SET nom = v.nom,
val_1 = v.val_1,
val_2 = v.val_2,
val_3 = v.val_3,
val_4 = v.val_4,
val_5 = v.val_5,
decision = v.decision,
somme = (case when d.decision like '%NON%'
then v.val_1 + v.val_2 + v.val_3 + v.val_4 + v.val_5
else 0
end)
from [TP1].[dbo].[Data] d cross join
(values (?, ?, ?, ?, ?, ?, ?)
) v(val_1, val_2, val_3, val_4, val_5, decision, numero)
where d.numero = v.numero;
您也可以将它们作为命名参数传入。
您可能会发现让 somme
成为计算列更容易。然后它总是最新的。您将删除当前定义,然后将计算列添加为:
alter table [TP1].[dbo].[Data] add somme as
(case when d.decision like '%NON%'
then val_1 + val_2 + val_3 + val_4 + val_5
else 0
end);