簡體   English   中英

MYSQL:SELECT concat('$', SUM(`sale_price`)) 給出一個隨機值

[英]MYSQL: SELECT concat('$ ', SUM(`sale_price`)) gives a random value

在 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 */;
SELECT concat('$ ', SUM(`sale_price`) ) FROM `transactions`

……還有……

SELECT concat('$ ', FORMAT(SUM(sale_price), 2)) FROM `transactions`

...做完全相同的事情,只有FORMAT(... , 2)確保您的銷售價格被格式化為小數,在. (這是人與人之間交易中通常用於貨幣價值的格式)。

如果沒有FORMAT(... , 2) ,銷售價格的格式取決於數據庫中銷售價格的格式。


注 1

當我嘗試...

SELECT concat('$ ', SUM(sale_price)) FROM test

...在包含列sale_price中的值21.2046.8023.5054.70的測試表上,我得到以下輸出:

  • $ 146.20000076293945如果我使用FLOAT
  • 如果我使用DECIMAL(10,2)類的東西, $ 146.20

這是兩種情況下的預期結果。 如您所見, FLOAT不太精確,因此應避免使用。


注2

根據下面評論中提供的信息,您的 PHPMyAdmin 安裝似乎有問題。 請卸載並重新安裝它(最好是不同的版本)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM