Die nullen slaan nergens op, met of zonder overbodige nullen, het betreft dezelfde waarde. Voorloopnullen worden wel gebruikt bij presentatie, maar niet bij het rekenen, vergelijken of opslaan. Het voegt niets toe, behalve performance verlies.
En een id, dat is maar een uniek gegeven, de waarde daarvan is verder onbelangrijk. Voorloopnullen zijn dan al helemaal overbodig.
in deze situatie zijn de voorloop nullen van belang, zonder voorloop nullen vind hij geen record.
Dat kan alleen wanneer jij met verkeerde datatypes ligt te rommelen.
Een id is in 99,999999% van de gevallen een integer en die sla je op als integer. Dan ben je direct van dit probleem af. 01 en 1 of 0000000001 zijn dan exact hetzelfde: 1
deze discussie is niet echt van belang, de nullen zijn nodig! Ik heb liever een oplossing voor mij probleem!?
1) Gebruik het juiste datatype, een INT
2) Waarom zijn voorloopnullen nodig? Laat je niet beperken door je eigen beperkte kennis en ervaring, anderen hebben (samen!) veel meer kennis en ervaring in huis. Voorloopnullen zijn voor id's volkomen zinloos.
3) Gebruik LIKE, en ga voortaan eerst koffie halen voordat je de query uitvoert, die wordt gruwelijk langzaam. Dat is een gevolg van een fout datatype en het lapmiddel LIKE. Indexen kunnen de performance weer iets opkrikken, maar het blijft een drama.
Ik zal het uitleggen, ik moet met een back office server communiceren via XML niet bepaald een snel gebeuren maar het kan op geen andere verantwoorde manier. Hierbij schrijf ik xml files die upload ik die worden door de back office server (third party application) verwerkt. De response download ik en verwerk ik weer om het geheel te controleren. De third party application maakt gebruik van een Fox Pro database, ik mag geen rechtstreekse verbinding maken en zal dus via de xml laag moeten communiceren. Blijkbaar heeft de xml laag de voorloop nullen wel nodig anders vindt hij geen matchend record.
Dan klinkt het alsof je een probleem hebt in je XML en niet in je database. De volgende 3 queries leveren exact dezelfde resulaten op:
SELECT COUNT(*) FROM tabelnaam WHERE id = 123;
SELECT COUNT(*) FROM tabelnaam WHERE id = '123';
SELECT COUNT(*) FROM tabelnaam WHERE id = '00123';
Het id is een integer (INT) die geen enkele moeite heeft met quotes, nullen of het ontbreken van nullen. Iedere keer wordt hetzelfde aantal records gevonden, geheel volgens verwachting. Wanneer je van het id een VARCHAR maakt, dan wordt het een heel ander verhaal! Dan zijn 123 en 00123 ineens 2 totaal verschillende gegevens. Hier zul je met LIKE moeten gaan werken.