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

标签 php mysql types decimal varchar

在表 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/

相关文章:

javascript - 将数据从 PHP(mysql) 传递到 AngularJS 时没有数据

php - 如何加载 yml 文件而不是 xliff 来翻译 Symfony 应用程序

mysql - 如何根据字段的值选择不同的列

php - 无法检索完整的 SMTP 错误日志 PHP 邮件程序

MySQL:只允许用户执行程序,但避免访问任何其他资源(例如表)?

typescript - 如何从类型中省略属性?

php - 如何使用 php 将 VML 转换为 png

haskell - 方程有不同数量的参数

java - java中奇怪的东西

php - 我该怎么做才能在 php mysql 的一个变量中获取 2 个不同的行?