首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用缺省NULL时,MySQL浮点值全部变为NULL

使用缺省NULL时,MySQL浮点值全部变为NULL
EN

Stack Overflow用户
提问于 2016-03-07 04:47:18
回答 1查看 594关注 0票数 0

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

代码语言:javascript
复制
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中的数据示例。

代码语言:javascript
复制
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

后来我发现

代码语言:javascript
复制
(sku, name, @description, regularPrice, @customerReviewAverage)

应修改为

代码语言:javascript
复制
(sku, name, @description, regularPrice, customerReviewAverage)
EN

回答 1

Stack Overflow用户

发布于 2016-03-07 04:59:21

尝尝这个

代码语言:javascript
复制
(sku, name, @description, regularPrice, @customerReviewAverage)
SET 
description = IF(@description='',NULL,@description),
customerReviewAverage = IF(@customerReviewAverage='',NULL,@customerReviewAverage);

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

因为你的mysql版本没有运行这个ok,你可以做一个单独的更新:

代码语言:javascript
复制
UPDATE Products SET customerReviewAverage = NULL WHERE customerReviewAverage = 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35832344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档