目前我有这个 UPDATE
语句:
UPDATE Customer
SET Name = @Name,
Age = @Age,
Email = @Email
...
现在,只有在提供值的情况下,我才需要将列包含到 UPDATE
语句中。否则,不要在 UPDATE
语句中包含该列。
所以在概念上可能是这样的:
UPDATE Customer
SET
IF LEN(@Name) > 0 THEN Name = @Name,
IF LEN(@Age) > 0 THEN Age = @Age,
IF LEN(@Email ) > 0 THEN Email = @Email
...
有什么办法可以做到这一点吗?我正在考虑动态查询,但更新列的列表超长,因此需要做大量工作才能更改为这样的动态查询:
SET @SQL = 'UPDATE Customer SET '
IF LEN(@Name) > 0
SET @SQL = @SQL + 'Name = @Name,'
IF LEN(@Age) > 0
SET @SQL = @SQL + 'Age= @Age,'
最佳答案
我认为你应该试试这个 (在声明和设置变量@Name、@Age 和@Email 之后)
UPDATE Customer SET
Name = case when @Name is null then Name else @Name end,
Age = case when @Age is null then Age else @Age end,
Email= case when @Email is null then Email else @Email end,
...
如果任何变量的值为空,则不会更新该字段。
关于sql-server - T-SQL : Update column only if value is provided,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53772278/