DB 開発

替换MySQL中的空白列。

替换MySQL中的空白列。

替换MySQL中的空白列。

有时,当特定列在数据库中没有值时,您希望运行某些特殊进程。
但是在MySQL的情况下,找到没有价值并不容易。


有两种类型的"无价值"

你可能认为"没有价值"是"没有价值"。
但是数据库中有两种类型的"无价值"。

  • 空白(blank)
  • 空值(NULL)


空白(blank)

空白是一种像""的状态。
它就像一个什么都没包含的盒子。


空值(NULL)

数据库中的NULL为NULL
这就像没准备状态。


blank与NULL不同

根据下面的SQL,空白与NULL不同。

SQL

select 
  (CASE WHEN ""=NULL THEN 1
   ELSE  0 END) as null_is_blank
from dual;

结果

null_is_blank
0

但是在!=''的情况下,空白似乎与NULL相同。

SELECT * FROM tbl_name WHERE str!='';
→ 排除空白和NULL。
MySQL中的空白和空白

所以为了处理"没有价值",我们应该重新选择NULL或空白。


替换空白

然后我们尝试替换空白。
但我们仍有问题。
在Oracle中,我们可以使用DECODE来替换一些特定值。
在MySQL中,我们没有DECODE
所以它需要两个步骤。

  • 用nullif替换NULL为空
  • 然后用ifnull将NULL替换为特定值
ifnull(nullif(目标列,''),'特定值')


最后

  • 有"不值"的不同类型。空白和NULL。
  • MySQL没有DECODE功能。
  • 为了替换空白,您应该用NULL替换它并用特定值替换NULL。

KRSW

駆け出し機械学習エンジニア。機械学習、DB、WEBと浅く広い感じ。 Junior machine learning engineer. Not a specialist but a generalist who knows DB, WEB too.

役に立ったらシェアしてくれると励みになります。
If you felt this article is useful, please share.
にほんブログ村 IT技術ブログへ

-DB, 開発
-

Translate »
Social media & sharing icons powered by UltimatelySocial

Copyright© ITips , 2020 All Rights Reserved.