0

我正在使用 phpmyadmin,我正在尝试更新所有包含单词“null”的字段(如果您想知道,它来自 javascript)。

update profile inner join member_info on Username=l_ID
set FirstName= Nname_f, 
LastName=Nname_l 
WHERE FirstName = "null"

但它说“名字”不能为空。奇怪的是 select...where..."null" DID 工作。

我正在尝试将 member_info 表中的名称提取到 Profile 中包含文字字符串“null”的任何名称

(这就是我得到的)

#1048 - Column 'FirstName' cannot be null
UPDATE profile INNER JOIN member_info ON Username = l_ID SET FirstName = Nname_f,
LastName = Nname_l WHERE FirstName LIKE  "null"
4

2 回答 2

1

我的假设基于 WHERE 匹配记录的症状,但 SET 未能更新记录:

  1. 字符串 "null"存储在 FirstName 中(否则FirstName = "null"将不匹配,并且在更新之后,它是给定的),并且;

  2. Nname_f 恰好为 NULL,因此分配失败(可能是因为 FirstName 被声明为非 NULL)。哎呀!

建议在继续之前修复 FirstName 的定义/数据。也就是说,决定它是否可以为 NULL - 如果可以(听起来应该是),更改定义(以便 FirstName 为 NULLABLE)并从"null"-> NULL 运行一次转换。

或者,使用或类似方法破解它set FirstName = ISNULL(Nname_f, "null")以自动从 NULL 转换 - 以便"null"一致地使用此文字。哎呀!

第三种选择是也声明Nname_fNOT NULLABLE——当然,确保它不包含任何 NULL——这样上述 NULL 分配是不可能的。

于 2013-09-18T23:46:46.543 回答
1

使用IS NULL

update profile inner join member_info on Username=l_ID
set FirstName= Nname_f, 
LastName=Nname_l 
WHERE FirstName IS NULL 
于 2013-09-18T23:42:33.733 回答