* Erick Papadakis
> i need to set up an auto_increment field inside mysql. for various
> reasons, the maximum size is 3.
Could you say something about these reasons...?
> but i don't want this to be ONLY integers
> because that limits me until 999 numbers only.
Well... using three _bytes_, the unsigned range for mediumint is 0 -
16777215.
If you want to restrict the _visual_ width of the column to be three
characters, then you are right, the limit for integers are 999.
auto_increment works with integers only.
> since i have all
> flexibility for these three digits or letters, i want to include numbers
> and some characters into it as well. e.g.,
>
> m78
> 23a
> 1pt
> 1~8
> !76
>
> ...etc can all be valid keys for me.
>
> how can i generate such numbers on the fly? if not inside mysql, then
> inside php?
I don't think you can do this in an efficient way inside mysql, but using
PHP you should be able to calculate a number into a three character string.
One way may be to use a base 36 integer... in python it would be something
like this:
>>> import string
>>> def base36(x):
... d = string.digits+string.lowercase
... a = x/(36*36)
... b = (x-(a*36*36))/36
... c = x-(a*36*36)-(b*36)
... return d[a]+d[b]+d[c]
...
>>> base36(9999)
'7pr'
>>> int('7pr',36)
9999
>>>
The max value would be 46655:
>>> base36(46655)
'zzz'
You could use a SMALLINT (2 bytes only) and auto_increment, and convert the
integer value to the base36() value before you display it on the screen.
This would ensure max three characters in this column.
--
Roger
sql
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php