2015-04-01 93 views
1

我有下面的代码位MySQL的:检测文本“NULL”或0字段,将其更改为正确的NULL

UPDATE 

table_one 

SET 

field_one = CASE 

    WHEN field_one = 'NULL' OR field_one = 0 
    THEN NULL 

    ELSE field_one 

END 

所以我想看看现场有一个字符串“NULL”或零(0)值。如果确实如此,则应将其设置为数据库内的NULL

我遇到的问题是,它将一切设置为NULL在某些字段中,而其他字段没问题。

代码有问题吗?

+0

你的case语句是干什么的0到字符串隐式转换。你说它适用于“某些领域”(列?)数据类型可能无法从一种数据类型转换到另一个会导致您的问题.. – xQbert 2015-04-01 15:21:27

+0

我想我失去的是“它设置了一切在某些字段中为NULL“......您在此更新单个列。当它为0或'Null'时,它应该将该行/列设置为null,那么你能举出一个不按预期工作的例子吗? – xQbert 2015-04-01 15:36:04

回答

2
UPDATE table_one 
SET field_one = NULL 
WHERE field_one = 'NULL' 
OR  field_one = '0' 
+1

这很简单,它只更新'NULL'字符串或0的记录;不像OP案例说明涉及每个记录。由于IO较少且容易出错,这应该运行得更快。 – xQbert 2015-04-01 15:19:50

0
UPDATE table_one SET field_one = NULL WHERE field_one IN (0 , 'NULL'); 
相关问题