MySQL 能自動將空字串轉換為 NULL 嗎?


您需要使用 MySQL 中的 NULLIF() 函式。其語法如下

SELECT NULLIF(yourCoumnName,’ ’) as anyVariableName from yourTableName;

在上述語法中,如果您將空字串( ‘ ‘) 與空字串( ‘ ‘) 進行比較,結果始終為 NULL。但是,如果您將 NULL 與空字串( ‘ ‘) 進行比較,則結果也將始終為 NULL。

為了理解上述語法,我們建立一個表。建立表的查詢如下

mysql> create table ConvertEmptyStringToNULL
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> Name varchar(20),
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.63 sec)

使用 insert 命令將一些記錄插入到表中。查詢如下

mysql> insert into ConvertEmptyStringToNULL(Name) values('John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('');
Query OK, 1 row affected (0.15 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL);
Query OK, 1 row affected (0.14 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('');
Query OK, 1 row affected (0.21 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into ConvertEmptyStringToNULL(Name) values(NULL);
Query OK, 1 row affected (0.70 sec)

使用 select 語句顯示錶中的所有記錄。查詢如下

mysql> select *from ConvertEmptyStringToNULL;

以下是輸出

+----+-------+
| Id | Name  |
+----+-------+
|  1 | John  |
|  2 |       |
|  3 | NULL  |
|  4 |       |
|  5 | Carol |
|  6 | NULL  |
+----+-------+
6 rows in set (0.00 sec)

以下是將空字串轉換為 NULL 的查詢

mysql> select NULLIF(Name,'') as EmptyStringNULL from ConvertEmptyStringToNULL;

以下是輸出,顯示 NULL 代替空字串

+------------------+
| EmptyStringNULL  |
+------------------+
| John             |
| NULL             |
| NULL             |
| NULL             |
| Carol            |
| NULL             |
+------------------+
6 rows in set (0.00 sec)

更新於: 30-Jul-2019

13K+ 瀏覽

開啟您的職業生涯

完成課程即可獲得認證

入門
廣告
© . All rights reserved.