[英]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.