Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: MySQL poistaa numerosarjan alusta nollat

mrkebab [05.10.2009 13:27:25]

#

Hei.

Minulle tuli yllättävä ongelma eteeni.
Vien PHP:lla MySQL tauluun numerosarjoja, jotka ovat 9 merkkiä pitkiä.

MySQL-taulun columni on määritelty: sarjanumero INT, not null.

Nyt jos yritän viedä sarjanumeroa: 000543493 tauluun, niin siellä se onkin arvona: 543493

Eli MySQL poistaa nollat edestä.

Kuinka saisin myös nollat mukaan tauluun?

En haluaisi muuttaa columnin tyyppiä varchar-tyyliseksi, koska numerosarja sisältää vain numeroita.

Chiman [05.10.2009 13:44:33]

#

mrkebab kirjoitti:

Kuinka saisin myös nollat mukaan tauluun?

Muuttamalla kenttä varchariksi. Int on kokonaisluku, joka ei sisällä alkunollia.

lainaus:

En haluaisi muuttaa columnin tyyppiä varchar-tyyliseksi, koska numerosarja sisältää vain numeroita.

Huono peruste. Tallentaisitko postinumeronkin kokonaislukuna?

Jos sarjanumero on aina 9 numeroa pitkä, voit toki kantaoperaatioiden yhteydessä lisätä/poistaa etunollat, mutta kannattaa miettiä onko se vaivan arvoista. Tuskin on. Lisäksi "alkaako sarjanumero 922:lla" -tyyppiset kyselyt muuttuisivat turhan vaikeiksi.

mrkebab [05.10.2009 13:57:15]

#

Ok. Muutan tyypin.

Kiitos Chiman.

trilog [05.10.2009 14:37:41]

#

MySQL:n zerofill -määre numerokentille olisi myös toiminut toivotusti.

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html:

When used in conjunction with the optional extension attribute ZEROFILL, the default padding of spaces is replaced with zeros. For example, for a column declared as INT(5) ZEROFILL, a value of 4 is retrieved as 00004. Note that if you store larger values than the display width in an integer column, you may experience problems when MySQL generates temporary tables for some complicated joins, because in these cases MySQL assumes that the data fits into the original column width.

walkout_ [08.10.2009 09:28:35]

#

Muistaakseni on jokin tietotyyppi tuolle valmiiksi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta