MySQL int(11) and int(3) store the same values.
MySQL has a little know feature for numerical types known as zerofill. This feature effects the display size of numerical types. Unlike the string types the number inside the parentheses is not the storage size in characters for the type. For numerical types the type name itself determines storage size.
|
The confusion between types comes from the number inside parentheses for different types. The integer type it’s the padding size for zerofill. The following examples demonstrates zerofill. All of these tables store the same range of values since they are all integer type.
Zerofill with padding specified:
mysql> create table t (t int(3) zerofill);
Query OK, 0 rows affected (0.00 sec)mysql> insert into t set t = 10;
Query OK, 1 row affected (0.00 sec)mysql> select * from t;
+——+
| t |
+——+
| 010 |
+——+
1 row in set (0.11 sec)
Zerofill with default width, the same as int(10):
mysql> create table t (t int zerofill);
Query OK, 0 rows affected (0.02 sec)mysql> insert into t set t = 10;
Query OK, 1 row affected (0.02 sec)mysql> select * from t;
+————+
| t |
+————+
| 0000000010 |
+————+
1 row in set (0.08 sec)
Without zerofill:
mysql> create table t (t int);
Query OK, 0 rows affected (0.01 sec)mysql> insert into t set t = 10;
Query OK, 1 row affected (0.01 sec)mysql> select * from t;
+——+
| t |
+——+
| 10 |
+——+
1 row in set (0.00 sec)
One common usage for this is creating invoice ids. It saves the work of having to use lpad() for ids like this ‘UP000009′.
February 14th, 2006 at 3:04 pm
I think you’ve got signed and unsigned backwards in your table. Just thought I’d let you know…
February 14th, 2006 at 9:34 pm
Nice catch.
February 9th, 2008 at 6:55 am
Thanks Eric, exactly the info I was looking for!
March 13th, 2008 at 11:55 am
Exactly, I was wondering what was the purpose for the number between parenthesis.
Great
June 6th, 2008 at 2:09 pm
In the previous sample with int(11) and int(3) with an initial value of 10, what comparison these two values should yield? ie Are the values the same or different in a where clause?
June 8th, 2008 at 3:40 pm
It depends on the comparison. If you compare them as integers then it’s the same. If you compare them as strings they aren’t.
June 23rd, 2008 at 11:29 pm
Great. I was looking for the same info. I was wondering if I could find an answer to this question. Thanks
July 22nd, 2008 at 12:20 pm
Was a bit confused about the value between parentheses. Cleared up now!
July 29th, 2008 at 12:46 am
Just pointing out the following (perhaps obvious) detail:
The query time increased with more “padding” and decreased with less.
August 28th, 2008 at 11:41 am
[...] caro Peter è sfuggito un piccolo dettaglio, infatti come spiega Eric Bergen, i valori memorizzabili in un campo di questo tipo sono da -2,147,483,648 a [...]
October 3rd, 2008 at 4:37 am
it would be better if you would had privided an example on signed and unsigned.