我正在嘗試根據 Microsoft SQL Server 中的三個不同條件更新三列。有關詳細資訊,請參見以下示例
UPDATE s
SET s.Column1 = NULL
FROM #My_Temp_Table s
WHERE ISNUMERIC(ISNULL(S.Column1, 0)) = 0
UPDATE s
SET s.Column2 = NULL
FROM #My_Temp_Table s
WHERE ISNUMERIC(ISNULL(S.Column2, 0)) = 0
UPDATE s
SET s.Column3 = NULL
FROM #My_Temp_Table s
WHERE ISNUMERIC(ISNULL(S.Column3, 0)) = 0
如果我想在一個更新陳述句中重構查詢,我將如何重構?感謝你的幫助!
uj5u.com熱心網友回復:
你真的不需要 where 子句。如果值不能轉換為目標型別,我們可以利用這個事實TRY_CONVERT()。NULL(我猜你想確保它們是integers,但你可以int用任何數字型別替換下面的。)
UPDATE #My_Temp_Table
SET Column1 = TRY_CONVERT(int, Column1),
Column2 = TRY_CONVERT(int, Column2),
Column3 = TRY_CONVERT(int, Column3);
您可以添加WHERE子句,但由于您需要使用OR并回傳與三個條件中的任何一個匹配的任何行,因此您最好像上面那樣只掃描一次:
UPDATE #My_Temp_Table
SET Column1 = TRY_CONVERT(int, Column1),
Column2 = TRY_CONVERT(int, Column2),
Column3 = TRY_CONVERT(int, Column3)
WHERE TRY_CONVERT(int, Column1) IS NULL
OR TRY_CONVERT(int, Column2) IS NULL
OR TRY_CONVERT(int, Column3) IS NULL;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415819.html
標籤:
