将带负值和小数的字符串转换为正确的类型

时间:2016-01-24 08:54:46

标签: php mysql

"适当的"转换方式

string(5) "-2,23"

我可以在DECIMAL(5,2) Mysql列中插入一个值吗?

我尝试过使用float,floatval等等......它们似乎都没有保留小数。

是因为逗号吗?我可以{&1 34}使用"。"如果需要但不愿意,我可能会遇到像str_replace

这样的值

1 个答案:

答案 0 :(得分:1)

是的,逗号错了。

你可以像这样插入

CREATE TABLE `testdec` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `d` decimal(5,2) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `testdec` (`id`, `d`)
VALUES
    (1, -2.23);

或将逗号更改为点

INSERT INTO `testdec` (`id`, `d`)
VALUES
    (2, REPLACE("-2,23",",","."));

但要小心。这只适用于字符串中没有其他点,例如" 1.000,12"。

如果你的字符串中有点可以这样做:首先删除点,然后将逗号更改为点

SELECT REPLACE( REPLACE("-456.123,23",".","") ,",",".") ;