[英]case expression to change the value of a column
我有两列measurement_unit
和measurement_size
在.The值measurement_unit
柱是ml,gm,litre
。而measurement_size
具有值200,1300,2000
我已经转换的所有值measurement_size
到圆图如.2,1.3,2
现在我想将measurement_unit
的值更改为liter
或kg
,这是我的情况表达式。但是它不起作用..我该怎么办?此外,这不是更新查询,我正在为我的报告进行此操作。不会更改数据库中的任何值。
CASE WHEN MUC.name='ml' THEN (MUC.name)='Liter'
WHEN MUC.name='gm' THEN (MUC.name)='Kg'
END AS Measurement,
一种可能是在UPDATE
语句中使用CASE WHEN
:
UPDATE MUC
SET MUC.name = CASE
WHEN MUC.name = 'ml' THEN 'Liter';
WHEN MUC.name = 'gm' THEN 'Kg';
ELSE MUC.name
END
我对此解决方案唯一不满意的是,它仍将使用当前值更新不匹配的行。 如果您确实只想更新要转换的行,则可以尝试使用包装在事务中的两个UPDATE
语句:
START TRANSACTION
UPDATE MUC
SET MUC.name = 'Liter' WHERE MUC.name = 'ml'
UPDATE MUC
SET MUC.name = 'Kg' WHERE MUC.name = 'gm'
COMMIT
如果要确保没有人看到您的单元处于中间状态,则可能需要进行事务处理。
你可以试试看
select
CASE WHEN M_unit='ml' THEN 'Liter'
WHEN M_unit.name='gm' THEN 'Kg'
ELSE M_UNIT
END AS Measurement_UNIT,
M_size/1000 as Measurement_SIZE
from Table
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.