6

我的表中有记录,其中 Name 列具有 Null 值。我想使用以下查询更新该记录。我的 sql 查询是:

set @Name=NUll;

update emp set name="gaurav" where name=@Name

当我运行此查询时..它不会更新记录..它不会将值Null与列值进行比较

如何才能做到这一点?

4

5 回答 5

18
SET @Name = NULL;

UPDATE emp
SET name="gaurav"
WHERE    (@Name IS NULL     AND name IS NULL)
      OR (@Name IS NOT NULL AND name = @Name)
于 2013-11-13T10:21:48.733 回答
1

您也可以使用以下条件ISNULL()

SET @Name = NULL;

UPDATE emp SET name='gaurav' WHERE ISNULL(@Name,'XXXXXXX')=ISNULL(Name,'XXXXXXX'); 

哪里'XXXXXXX'是 EMP 表中不存在的唯一字符串常量;

于 2013-11-13T10:43:41.993 回答
1

除了 IS NULL 或 IS NOT NULL 之外,在 SQL 中使用空值的测试总是错误的。您应该在 WHERE 中添加 IS NULL 子句:

WHERE name = @name
**OR (name IS NULL and @name IS NULL)**
于 2013-11-13T11:01:34.290 回答
-2

尝试这个UPDATE emp SET name = "gaurav" WHERE (@name IS NULL AND name IS NULL)

于 2013-11-13T10:20:41.777 回答
-3

根据我的 SQL 知识,您可以存储NULL在变量中,但不能将其用于比较

update emp set name="gaurav" where name is Null
于 2013-11-13T10:20:35.383 回答