【发布时间】:2016-04-01 07:44:45
【问题描述】:
在 MYSQL 中:
SELECT 语句 ...
SELECT concat('$ ', SUM(`sale_price`) ) FROM `temp_table`
... 给出一个随机输出值,而 ...
SELECT concat('$ ', FORMAT(SUM(`sale_price`), 2)) FROM `temp_table`
...给出正确的输出。
为什么会这样?第一条语句有什么问题?
这是我尝试这些语句的表的 SQL 代码。
SQL 代码:
-- phpMyAdmin SQL Dump
-- version 4.2.11
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Apr 01, 2016 at 11:04 AM
-- Server version: 5.6.21
-- PHP Version: 5.6.3
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `book_shop`
--
-- --------------------------------------------------------
--
-- Table structure for table `temp_table`
--
CREATE TABLE IF NOT EXISTS `temp_table` (
`sale_price` decimal(8,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `temp_table`
--
INSERT INTO `temp_table` (`sale_price`) VALUES
('21.20'),
('46.80'),
('23.50'),
('54.70');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
【问题讨论】:
-
transactions表中的一些数据在这里会很好。 -
很奇怪,db-fiddle.com/f/7GNPffqwSEPAitK6okAy71/0 似乎支持你的说法:
CONCAT调用的结果是某种缓冲区 -
stackoverflow.com/q/22023468 表现出类似的行为
标签: mysql currency money-format