mysql 中存在null和空時建立唯一索引的方法

2022-09-27 03:48:13 字數 1277 閱讀 5799

好多情況下資料庫預設值都有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特殊的注意...