我想根据另一列的值更新列。 像这样:
update mt
set
case
when mt.type = 1 (1=float 2=boolean 3=datetime 4=character)
then mt.float_value = mt.value
end
case
when mt.type = 2 (1=float 2=boolean 3=datetime 4=character)
then mt.boolean_value = mt.value
end
case
when mt.type = 3 (1=float 2=boolean 3=datetime 4=character)
then mt.datetime_value = mt.value
end
...
from myTable mt
我想更新列mt.float_value或mt.boolean_value或mt.datetime_value或mt.char_value,具体取决于列mt.type的值
if the column mt.type = 1 then update mt.float_value with mt.value
if the column mt.boolean_value = 2 then update mt.float_value with mt.value
依旧...... 这可能吗?我该如何进行此更新? 谢谢你的帮助
答案 0 :(得分:2)
您可以将其拆分为三个查询:
update mt
set float_value = convert(value, float)
where type = 1
update mt
set bit_value = convert(value, bit)
where type = 2
update mt
set datetime_value = convert(value, datetime)
where type = 3
答案 1 :(得分:1)
您可以尝试此操作,但如果无法将任何值转换为目标列类型,则会失败:
update mt
set
mt.float_value = case
when mt.type = 1 then convert(mt.value, float) else mt.float_value
end,
mt.boolean_value = case
when mt.type = 2 then convert(mt.value, bit) else mt.boolean_value
end,
mt.datetime_value = case
when mt.type = 3 then convert(mt.value, datetime) else mt.datetime_value
end
...
from myTable mt