将 csv 文件导入 mysql 时,是否可以将字符串转换为浮点数?

Is it possible to convert string into float when importing a csv file into mysql?

He.llo,伙计们

我正在学习 SQL 作为一项实践练习,我正在尝试从我国的政府数据库中导入 .csv 文件。

基本上它是一个包含 4 行的文件: 日期、硬币名称、价值、数量和 这些行的格式不符合我的需要

日期可以,是 YYYY-MM-DD

币名也可以,因为它是一个字符串

价值(硬币价值,如 0.1 或 10)也可以,因为它的格式只有点

数量问题 数量是多少coins/notes可供公民使用,但是用点和逗号格式化(这是我想不通的真正问题)

举个例子:

1995-01-02;莫达斯 - 1a。家庭 (inox);0.01;834.342.314,00

1995-01-02;莫达斯 - 1a。家庭 (inox);0.05;636.711.876,00

1995-01-02;莫达斯 - 1a。家庭 (inox);0.10;583.076.666,00

1995-01-02;莫达斯 - 1a。家庭 (inox);0.25;146.883.388,00

1995-01-02;莫达斯 - 1a。家庭 (inox);0.50;329.791.540,00

有什么方法可以将数量(例如:329.791.540,00)转换为浮点数吗?

谢谢!

----- 编辑 01:17 GMT
我应用 REPLACE 作为 Marco 对整个 table

SELECT data_,nome,valor,CAST(REPLACE(REPLACE(qntd,'.',''),',','.') AS FLOAT) AS qntd    
FROM indata;  

这是正确的吗?但即使它是正确的,也没有用,值是
5.890.789.013,00 -> 5890790000
好像被围起来了

-------- 编辑01:39格林威治标准时间
当我更改 FLOAT -> DOUBLE 时它起作用了,有人知道为什么吗?

注意 qnty 字段的记录最多可达十亿

使用REPLACE()字符串函数,两次;一次用空替换点,一次用点替换小数点逗号,然后将该表达式转换为浮点数 - 就像在这个使用该格式的第一个文字的小演示示例中一样:

WITH indata(s) AS (
  SELECT '834.342.314,00' FROM dual
)
SELECT 
  CAST(REPLACE(REPLACE(s,'.',''),',','.') AS FLOAT) AS f 
FROM indata;
-- out      f     
-- out -----------
-- out  834342314

试试这个。

SELECT
    data_,
    nome,
    valor,
    CAST( REPLACE ( REPLACE ( qntd, '.', '' ), ',', '.' ) AS DECIMAL ( 12, 2 ) ) AS qntd 
FROM
    indata;