簡體   English   中英

大小寫表達式以更改列的值

[英]case expression to change the value of a column

我有兩列measurement_unitmeasurement_size在.The值measurement_unit柱是ml,gm,litre 。而measurement_size具有值200,1300,2000我已經轉換的所有值measurement_size到圓圖如.2,1.3,2現在我想將measurement_unit的值更改為literkg ,這是我的情況表達式。但是它不起作用..我該怎么辦?此外,這不是更新查詢,我正在為我的報告進行此操作。不會更改數據庫中的任何值。

 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM