2016-08-20 59 views
1

我想在MySQL數字字段上有一個空字段。如果我將該字段定義爲允許NULL值,則默認爲0.00。有時候,對於這一行項目,我更喜歡沒有價值我大概可以創建一個不同的表來跟蹤這些項目,但是在這一點上我更喜歡一個表格解決方案。是否有可能有一個空的MySQL數值字段?

+2

正確的方法是使用'NULL'。這與0.00完全不同,所以我不知道爲什麼'NULL'會默認爲合法值。 –

+0

Mysql不太可能將'null'值轉換爲數字,除非被指示這麼做。但是,您可能會將空字符串作爲值傳遞給它,而不是null,並將其轉換爲0. – Shadow

回答

1

因爲你是用DEFAULT做到這一點的。不要做:

create table t1 
( id int auto_increment primary key, 
    thing varchar(100) not null, 
    anInt NUMERIC(5,2) NULL DEFAULT 0 
); 

insert t1(thing) values ('fish'); 
select * from t1; 
+----+-------+-------+ 
| id | thing | anInt | 
+----+-------+-------+ 
| 1 | fish | 0.00 | 
+----+-------+-------+ 
1

對我的作品在MySQL 5.7.12:

mysql> create table X (a double null); 
Query OK, 0 rows affected (0.01 sec) 

mysql> desc X; 
+-------+--------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+--------+------+-----+---------+-------+ 
| a  | double | YES |  | NULL |  | 
+-------+--------+------+-----+---------+-------+ 
1 row in set (0.00 sec) 

mysql> alter table X add column b int; 
Query OK, 0 rows affected (0.01 sec) 
Records: 0 Duplicates: 0 Warnings: 0 

mysql> desc X; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| a  | double | YES |  | NULL |  | 
| b  | int(11) | YES |  | NULL |  | 
+-------+---------+------+-----+---------+-------+ 
2 rows in set (0.00 sec) 

mysql> insert into X (a) values (1.3); 
Query OK, 1 row affected (0.00 sec) 

mysql> insert into X (b) values (1); 
Query OK, 1 row affected (0.00 sec) 

mysql> select * from X; 
+------+------+ 
| a | b | 
+------+------+ 
| 1.3 | NULL | 
| NULL | 1 | 
+------+------+ 
2 rows in set (0.00 sec) 
+0

請注意,MySQL 14.14中沒有這樣的東西。這聽起來像是一個客戶端版本,但客戶端通常是向後兼容的,有時是向前兼容的。服務器版本通過查詢「SELECT @@ VERSION;'找到。 –

+0

固定,謝謝.. – creativeChips

相關問題