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.
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.
Ok. Muutan tyypin.
Kiitos Chiman.
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.
Muistaakseni on jokin tietotyyppi tuolle valmiiksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.