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 に答える