1
A
回答
4
你應該使用ISNULL(@paramA, ColumnA)
:
UPDATE someTable
set ColumnA = ISNULL(@ParamA, ColumnA)
WHERE
.....
-1
考慮到,美中提到,如果源數據不爲null,考慮然後更新
--Create a sample table
DECLARE @SAMPLE TABLE
(
SourceID INT IDENTITY(1,1),
SourceData NVARCHAR(255)
)
--Create dummy data
INSERT INTO @SAMPLE VALUES ('SOMETHING')
INSERT INTO @SAMPLE VALUES (NULL)
INSERT INTO @SAMPLE VALUES ('SOMETHING')
--update source data that is not null, this will update entire table
UPDATE @SAMPLE
SET SourceData = 'New Data'
FROM @SAMPLE t1
INNER JOIN (
SELECT * FROM @SAMPLE Where SourceData is not null) t2
ON t1.SourceID = t2.SourceID
或者如果你只是想更新選定的記錄
--Pass in your variable
DECLARE @SourceID INT
--play around your source id
SET @SourceID = 2
--if the particular id is with null data, then update will never perform
IF EXISTS(SELECT 1 FROM @SAMPLE WHERE SourceID = @SourceID and SourceData is not null)
Update @SAMPLE
set SourceData = 'New Item'
where SourceID = @SourceID
+0
您的解決方案不能按照OP要求的方式工作。他們希望更新匹配源表的_all_行,但是當源數據中的_field_爲NULL時,忽略它並保留現有的字段數據。如果一個字段爲「NOT NULL」,您的答案只會更新_entire_行。 – Tony
+0
糾正我,如果我錯了,所以有2個表源表和目標表,每當任何時候,OP想要根據源表數據更新目標表時,只要源數據不爲空? –
相關問題
- 1. 我如何使不允許列允許空和允許空列不允許空
- 2. 列不允許有空值
- 3. Excel VBA - 如果列B包含任何值,則更新列A的值。如果列B不包含值,則不要運行宏
- 4. 如果該字段不包含子值,則更新
- 5. 如果在列中已經存在5次,則不允許輸入值
- 6. 數據透視表如何不允許多列中的空值
- 7. 如果文件已包含數據,則將數據添加到新行 - Java
- 8. 允許空值的SQL更新
- 9. 更新如果數據已更改,則僅觸發更新
- 10. 如果另一列包含字符串,則更新列
- 11. pandas更新數據幀的值,如果單元格包含' - '
- 12. 是否允許URL包含空格?
- 13. ORACLE約束允許爲空值,如果
- 14. 更改列不應該允許爲空
- 15. 將列更改爲不允許爲空
- 16. 主鍵列不允許空值
- 17. 如果列已更新,則使用變量UPDATE()檢查器
- 18. 包裝gs://不允許包含
- 19. 允許空值的SQLite數據庫
- 20. 數據庫更新後ORA-01733(虛擬列不允許)
- 21. mysql,更新後的列會得到空值,如何在插入和更新時不允許爲空
- 22. 允許圖像比包含div更寬
- 23. MongoDB,如果新值不爲空,則更新收集字段
- 24. PHP包含的類如果修改則不更新
- 25. TableView不允許滾動,如果它只包含幾行
- 26. Datagridview列不允許空
- 27. 如果document.URL包含數組元素,則更改變量值
- 28. 如果$ _POST值爲空,如何不更新數據庫?
- 29. 允許VSTS更新測試數據庫
- 30. 允許原子更新到數據庫
我不明白你是如何做一個插入和更新值的麻煩(你不插入不更新?)。想要提供更多關於這裏發生了什麼的信息? – Twelfth
也許'UPDATE表SET列= CASE當@input IS NULL那麼列ELSE @input END'? – axblount
對不起,我正在做一個更新,如果它符合某些標準。只是不想更新具有空數據的列。 – user2395035