当使用默认NULL时,MySQL浮点值全部变为NULL

时间:2016-03-06 20:47:18

标签: mysql database

我创建下表并将FLOAT的默认值设置为NULL,因为我希望在表中将缺少的浮点值存储为NULL。但问题是在我将默认值设置为NULL后,所有customerReviewAverage值都变为NULL。 以下是我创建表和加载数据的代码。

CREATE TABLE Products(sku INTEGER, name VARCHAR(255), description TEXT,
                          regularPrice FLOAT,
                          customerReviewAverage FLOAT default NULL );
LOAD DATA LOCAL INFILE 'product.csv'
    INTO TABLE Products
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    (sku, name, @description, regularPrice, @customerReviewAverage)
    SET description = IF(@description='',NULL,@description);

这是product.csv中的数据样本。

19658847,Glanzlichter - CD,,12.99,5.0
19658856,Glanzlichter - CD,,6.99,
19658865,Glanzlichter - CD,,8.99,
1965886,Beach Boys '69 - CASSETTE,,6.99,4.5

后来我发现了

(sku, name, @description, regularPrice, @customerReviewAverage)

应修改为

(sku, name, @description, regularPrice, customerReviewAverage)

1 个答案:

答案 0 :(得分:0)

试试这个

(sku, name, @description, regularPrice, @customerReviewAverage)
SET 
description = IF(@description='',NULL,@description),
customerReviewAverage = IF(@customerReviewAverage='',NULL,@customerReviewAverage);

您的“缺失”值是CSV中的空白文本。

由于您的mysql版本运行不正常,您可以单独更新:

UPDATE Products SET customerReviewAverage = NULL WHERE customerReviewAverage = 0