如何在mysql

时间:2015-06-16 14:10:56

标签: mysql sql

表中的一个列包含'NULL'值,我想用某些值替换它们。

我查看了这篇文章:Replace nulls values in sql using select statement?并按照答案。

我的sql声明:

Select ifnull(`option`, 'MCQ') as `option` 
from question_table 

此语句返回已存在“MCQ”的列,但“NULL”值尚未替换。

需要一些指导来改变这种情况。

3 个答案:

答案 0 :(得分:4)

如果您想更改数据,则需要s='(?U0 ?U2 ?U9 ?U11 ?U21)' sed 's/?U\([0-9]\+\)/\1/g; s/[()]//g' <<< "$s" 0 2 9 11 21

update

update question_table set option = 'MCQ' where option is null; 语句不会更改数据库。

答案 1 :(得分:0)

如果您想使用Gordon's answer更新表格,但是您可能只想在NULL中返回SELECT的替换值,则可以使用COALESCE

SELECT COALESCE(`option`, 'MCQ') as `option` 
FROM question_table

这会为每个MCQ选择option - NULL的值。

另一种方法是使用CASE

SELECT CASE WHEN `option` IS NULL THEN 'MCQ' ELSE `option` END as `option` 
FROM question_table

答案 2 :(得分:0)

'NULL'是一个字符串,NULL是一个特殊值,表示&#34; unknown / unavailable&#34;。它们完全不同。

MySQL函数IFNULL()处理NULL值(无法使用常规比较运算符进行比较)。您可以使用常规比较运算符(=<>)来处理字符串,即使它们是'NULL'

如果您的查询产生&#39; NULL&#39;结果集中的值表示数据库中的值不是NULL而是字符串('NULL')。

在这种情况下,您需要的查询是:

SELECT IF(`option` = 'NULL', 'MCQ', `option`) AS `option` 
FROM question_table