在mysql中使用Max时初始零被剥离

时间:2013-04-19 06:22:33

标签: mysql sql phpmyadmin max sqlfiddle

测试 -

CREATE TABLE shop (
    article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
    dealer  CHAR(20)                 DEFAULT ''     NOT NULL,
    price   DOUBLE(16,2)             DEFAULT '0.00' NOT NULL,
    PRIMARY KEY(article, dealer));
INSERT INTO shop VALUES
    (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
    (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);

我的查询 -

SELECT MAX( article ) AS article
FROM shop

输出 -

+---------+
| article |
+---------+
|       4 |
+---------+

但是我期待 -

+---------+
| article |
+---------+
|    0004 |
+---------+

我试过CAST但没有运气。

让我知道如何处理这个问题。

仅供参考 - 我试图为此创建SQL Fiddle但是小提琴在执行SELECT * FROM shop

时没有填充零http://sqlfiddle.com/#!2/4abbe/24

然而,在phpmyadmin中,ooo's填充正常。

MySQL设置 - 服务器版本:5.5.16 PHPMYADMIN设置 - 版本信息:3.4.5

我的表数据表示 -

table data

3 个答案:

答案 0 :(得分:2)

您可以使用LPAD()

SELECT LPAD(article, 4, 0) FROM table_name;

答案 1 :(得分:2)

SELECT  LPAD(MAX( article ), 4, '0') AS article FROM shop; 

- )

答案 2 :(得分:1)

当您使用ZEROFILL时,它实际上是以该形式将其存储在数据库中,但在检索它时会截断零。所以你应该使用: -

SELECT  LPAD(MAX( article ), 4, '0') AS article FROM shop;