1

去测试 -

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,但执行时小提琴未填充零http://sqlfiddle.com/#!2/4abbe/24SELECT * FROM shop

然而,在phpmyadmin其与ooo's填充正常工作。

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

我的表格数据表示 -

表数据

4

3 回答 3

2

您可以使用LPAD().

SELECT LPAD(article, 4, 0) FROM table_name;
于 2013-04-19T06:27:02.517 回答
2
SELECT  LPAD(MAX( article ), 4, '0') AS article FROM shop; 

;-)

于 2013-04-19T06:27:03.787 回答
1

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

SELECT  LPAD(MAX( article ), 4, '0') AS article FROM shop; 
于 2013-04-19T06:29:52.637 回答