僅當不同列的值為 false、null 或與傳入值不匹配且傳入值設置為 true 時,我如何更新列?

骷髏狂

在我的表中,我有兩列

ClosedDate DateTime null
IsClosed bit null

如果@IsClosed的輸入值是真實的當前值IsClosednull或假的話,我想更新的價值ClosedDateGetDate()這樣

ClosedDate = GETDATE()

這是我嘗試過但不起作用的方法。

ALTER PROCEDURE[dbo].someProcedure
@IsClosed   bit,
Update dbo.Foo
SET
//Other fields to be set 
ClosedDate = CASE WHEN IsClosed = 0 OR IsClosed = NULL AND IsClosed <> @IsClosed THEN GETDATE() END,
    IsClosed = @IsClosed
WHERE myId = @myId

我哪裡錯了?

奧利維爾·雅科特-德斯科姆

CloseDate如果不能改變則設置為自身,否則設置為 NULL。

UPDATE dbo.Foo
SET
    ClosedDate = CASE WHEN ISNULL(IsClosed, 0) = 0 AND IsClosed <> @IsClosed
                 THEN GETDATE()
                 ELSE ClosedDate
                 END,
    IsClosed = @IsClosed
WHERE myId = @myId

請注意,如果您只設置一列,或者如果兩列必須一起更新或不一起更新,您只需將所有條件添加到 WHERE 子句中。

UPDATE dbo.Foo
SET
    ClosedDate = GETDATE()
    IsClosed = @IsClosed
WHERE
    myId = @myId AND
    ISNULL(IsClosed, 0) = 0 AND
    IsClosed <> @IsClosed

另外,不要測試IsClosed = 0 OR IsClosed = NULL由於 NULL 傳播,這不會按預期工作。ISNULL(IsClosed, 0) = 0改為使用COALESCE(IsClosed, 0) = 0(我不確定 SQL-Server 2008 是否已經知道 ISNULL)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

當我們將 null 或 undefined 作為值傳遞時,為什麼輸入值不會改變?

如果輸入為空,如何在整數列中將值設置為 NULL

检查值是否为false,true或null

如何設置 SwiftUI 應用程序以將輸入值作為參數傳遞到 URL 字符串中

使用TRUE或FALSE值对列进行过滤

傳遞輸入值後不更新屬性

如何將 Android Room 列從 notNull=true 更新為 notNull=false?

如何为具有True,False和Null值的布尔字段创建分层样本?

Postgresql SQL:如何检查具有null和True,False值的布尔字段?

僅當 Pandas 中的所有值都為 0 時,才將所選列的 0 替換為 NaN

如何為作為 prop 傳入的 React Compnent 設置類型

當它們返回 null/none 時,如何為刮取的結果設置默認值

當為向量中的位置賦值時,如何傳遞值的名稱?

awk 將 $2 打印為我期望的值,但是當我將 $2 的值與相同的值進行比較時,它返回 false

代码仅更新DB中的false值,而不更新true

當 minifyEnabled 設置為 true 時的 NullPointer

c# - 當輸入參數為枚舉時,如何在屬性中傳遞逗號分隔值

oracle - 僅當包含該 ID 的最大日期值時,才選擇標記為 1 的所有不同 ID

如何將布爾值從 true 更改為 false,反之亦然

為什麼將輸入值傳遞給函數參數時會出錯,而靜態分配時卻不會?

我需要等到侦听器将布尔值从null更改为false / true java

如何將對象項的右值設置為等於變量而不僅僅是值?

是dataframe列的行中的值返回true还是false

计算列中布尔值从True变为False的次数

根据各个列的True或False值过滤行

Power BI-在列中搜索值,返回True / False

在 Google 表格中返回列标题而不是 TRUE 或 FALSE 值

僅當條件為 True 時才使用 Eel 在 Python 中調用 JavaScript 函數

如果其他列从 FALSE 变为 TRUE,则按组创建值为 TRUE 的列