我试图从mysql数据库中获取一个浮点值,这个数据库是以0,5
格式编写的。选择它,我回复0
作为回应。我如何获得浮动值?
我这样选择:
$requete = $this->bdd->bd->prepare('SELECT charge
FROM detailsfiche
WHERE ref_hl = :ref_hl
&& intervenant = :intervenant');
$requete->bindValue(':ref_hl', $refhl, PDO::PARAM_INT);
$requete->bindValue(':intervenant', $intervenant, PDO::PARAM_STR);
$requete->execute();
$data = $requete->fetch();
$requete->CloseCursor();
return $data['charge'];
提前致谢!
答案 0 :(得分:1)
每个评论的charge
字段为varchar
,其值为0,5
。在这种情况下,您可以使用REPLACE()
函数将,
替换为.
,如
SELECT CAST(REPLACE(charge,',','.') AS float(5,3)) FROM detailsfiche
WHERE ref_hl = :ref_hl
AND intervenant = :intervenant
答案 1 :(得分:0)
免责声明:这可能不是一个完整的答案..这只是向您展示如何将您的varchar'数字'转换为实际的小数。
我不确定你在考虑你给我们的内容时究竟需要什么......但是你可以将数据转换成数字就像这样
测试样本数据与您的DECIMAL匹配:
SELECT CAST(testing as DECIMAL (10,2)) FROM(
SELECT
CONCAT(
CAST(left_side as UNSIGNED), '.' , CAST(right_side as UNSIGNED)
) as testing FROM(
SELECT
SUBSTRING_INDEX('0,5', ',', 1) as left_side,
SUBSTRING_INDEX('0,5', ',', -1) as right_side
) as t
) as final;
这将给出一个小数,在句号的左边有10个空格,在句号的右边有2个空格。现在转换为您的查询。
将它放入您的查询中
SELECT CAST(testing as DECIMAL (10,2))
FROM(
SELECT
CONCAT(
CAST(left_side as UNSIGNED), '.' , CAST(right_side as UNSIGNED)
) as testing
FROM(
SELECT
SUBSTRING_INDEX(charge, ',', 1) as left_side,
SUBSTRING_INDEX(charge, ',', -1) as right_side
FROM detailsfiche
WHERE ref_hl = :ref_hl && intervenant = :intervenant
) as t
) as final;
我真的没有办法测试这个,但我相信它会做你想要的:)
答案 2 :(得分:0)
MySQL用于从整数部分界定浮点数的小数部分的语法总是使用点。 MySQL的本地化不允许逗号,尽管用户的国家风俗。
例如,一半的值代表0.5
,即使在欧洲也无法代表0,5
。