好多情況下資料庫預設值都有null,但是經過程式處理很多時候會出現,資料庫值為空而不是null的情況。此時建立唯一索引時要注意了,此時資料庫會把空作為多個重複值,而創alcebrm建索引失敗,示例如下:
步驟1:
mysql> select phone ,count(1) from user group by phone;
+-----------------+----------+
| phone | count(1) |
+-----------------+----------+
| null | 70 |
| | 40 |
| +86-13390889711 | 1 |
| +86-13405053385 | 1 |
步驟一中發現資料庫中有70條null資料,有40條為空的資料。
步驟2:
mysql> select count(1) from user where phone is null;
+----------+
| count(1) |
+---------www.cppcns.com-+
| 70 |
+----------+
1 row in set (0.00 sec)
經2再次驗證資料庫中null和空不一樣的兩個值。
步驟mysql> alter table user add constraint uk_phone unique(phone);
error 1062 (23000): duplicate entry '' fo程式設計客棧r key 'uk_phone'
此時建立索引提示『 '為乙個重複的屬性。
步驟4:將所有的空值改成null
mysql> update user set phone = null where phone = '';
query ok, 40 rows affected (0.11 sec)
rows matched: 40 changed: 40 warnings: 0
步驟5:再次建立唯一索引
mysql> alter table user add constraint uk_phone unique(phone);
query ok, 0 rows affected www.cppcns.com(0.34 sec)
records: 0 duplicates: 0 warnings: 0
建立成功,ok了
本文標題: mysql 中存在null和空時建立唯一索引的方法
本文位址:
MySQL 中NULL和空值的區別
1 在進行count 統計某列的記錄數的時候,如果採用的null值,會別系統自動忽略掉,但是空值是會進行統計到其中的。2 判斷null 用is null 或者 is not null,sql 語句函式中可以使用ifnull 函式來進行處理,判斷空字元用 或者 來進行處理 3 對於mysql特殊的注意...
MySQL 中NULL和空值的區別
1 在進行count 統計某列的記錄數的時候,如果採用的null值,會別系統自動忽略掉,但是空值是會進行統計到其中的。2 判斷null 用is null 或者 is not null,sql 語句函式中可以使用ifnull 函式來進行處理,判斷空字元用 或者 來進行處理 3 對於mysql特殊的注意...
MySQL 中NULL和空值的區別
1 在進行count 統計某列的記錄數的時候,如果採用的null值,會別系統自動忽略掉,但是空值是會進行統計到其中的。2 判斷null 用is null 或者 is not null,sql 語句函式中可以使用ifnull 函式來進行處理,判斷空字元用 或者 來進行處理 3 對於mysql特殊的注意...