gpt4 book ai didi

php - MySQL -- 将 T1 中的 VARCHAR 值插入到 T2 中的 DECIMAL 字段中

转载 作者:行者123 更新时间:2023-11-29 04:56:16 27 4
gpt4 key购买 nike

在表 1 中,我从电子表格中导入了数据。在一个表列中有混合值:94.7、45.0、36、汽车、公共(public)汽车……等。数据类型为 VARCHAR(10)

我想将 Table_1 中该列的值插入到 Table_2 中的 DECIMAL(5,1) 字段中。我希望非数字值注册为 0.0。这很重要。

我已经尝试了几种方法,包括 CAST(),它可以在我的 MySQL GUI 中运行,但会给出一长串警告。这是我尝试过的 SQL 类型的示例。

DELETE FROM table_2;
INSERT INTO table_2 (NAME, decimal_column)
(SELECT NAME
, CAST(varchar_column AS DECIMAL(5,1))
FROM table_1) ;

MySQL 警告示例。

Warning Code : 1366 Incorrect decimal value: '' for column '' at row -1

Warning Code : 1292 Truncated incorrect DECIMAL value: 'house'

另外,PHP 也没有。当我尝试使用 PHP 运行相同的查询时,我收到了这条 fatal error 消息:

Incorrect decimal value: '' for column '' at row -1

谢谢你的建议

最佳答案

如果您正在清除 table_2,您可以使用 TRUNCATE table_2;,这可能会更快。

一种方法(虽然我不知道它是否最好;对于大型数据集来说它可能有点慢)是使用正则表达式:

INSERT INTO table_2 (NAME, decimal_column)
(SELECT NAME
, IF(varchar_column REGEXP '^[[:digit:].]+$', varchar_column, 0.0)
FROM table_1) ;

这是假设 varchar_column 的十进制值中没有空格。如果可能的话,您可以按如下方式使用 TRIM:

IF(TRIM(varchar_column) REGEXP '^[[:digit:].]+$', TRIM(varchar_column), 0.0)

关于php - MySQL -- 将 T1 中的 VARCHAR 值插入到 T2 中的 DECIMAL 字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com