如何找到默认NULL和NULL字符串值的差异

时间:2013-06-27 11:02:50

标签: sql

我有一张桌子,例如

Merchant(
    id (PK,char(15),not null),
    name (varchar(22),null),
    city(varchar(10),null),
    location(varchar(10),null),
    state_code(int,null),
    country_code(int,null)
)

city总是NULLname也是NULL

有人将这些字段更新为字符串 "NULL"

我如何找到差异?

3 个答案:

答案 0 :(得分:2)

您可以像这样修复有问题的行:

UPDATE Merchant
SET city = NULL
WHERE city = 'NULL';

UPDATE Merchant
SET name = NULL
WHERE name = 'NULL';

只需使用字符串 "NULL"找到行:

SELECT * FROM Merchant
WHERE city = 'NULL'
OR name = 'NULL';

或者找到真正的NULL

SELECT * FROM Merchant
WHERE city = NULL
OR name = NULL;

请注意所有这些示例:NULL,然后有'NULL'

答案 1 :(得分:1)

您可以尝试类似

的内容
SELECT *
FROM Merchant 
WHERE city = 'NULL'
OR name = 'NULL'

这应返回列city或column name设置为字符串NULL的所有行。

SELECT *
FROM Merchant 
WHERE city IS NULL
OR name IS NULL

将返回列城市或列名称为 NULL

的所有行

答案 2 :(得分:0)

  • NULL表示未设置
  • 空字符串是没有符号的字符串

对于例如数字更简单支付金额(账单):   - 支付金额为0(您无需支付)[amount = 0]   - 金额可以是100.-(你必须支付100.-)[amount = 100]   - 或者金额可以为NULL,这意味着尚未设置金额[amount is null]

对于给定的案例,括号中的陈述将返回true。

所以你看,它与0(没有钱支付)或NULL(未设置)的数量不同。你的字符串也一样。它没有被设置或是一个空字符串。

我希望它可以帮助你......; - )