Tomsen Skrevet 24. april 2006 Skrevet 24. april 2006 Sitter å jobber med en litt kinki sak. Jobber på tabeller som har en verdi lagret som int, men problemet er at denne kolonnnen kan inneholde verdier som starter med 0. eks: 00229 - og da må jeg få til at det skal være 00229 og ikke 229. Vet at jeg kan gjøre om dette i en sql ved select for f.eks en utskrift, men om jeg skal generere noe rett fra den tabellen har jeg ett problem. Noen som har vært borti noe liknende, eller skjønner hva jeg mener. NB kan ikke gjøre om til string, det skal/må være int...
roac Skrevet 24. april 2006 Skrevet 24. april 2006 Sitter å jobber med en litt kinki sak. Jobber på tabeller som har en verdi lagret som int, men problemet er at denne kolonnnen kan inneholde verdier som starter med 0. eks: 00229 - og da må jeg få til at det skal være 00229 og ikke 229. Vet at jeg kan gjøre om dette i en sql ved select for f.eks en utskrift, men om jeg skal generere noe rett fra den tabellen har jeg ett problem. Noen som har vært borti noe liknende, eller skjønner hva jeg mener. NB kan ikke gjøre om til string, det skal/må være int... 5977426[/snapback] Int er en tallverdi, og leading zeroes er uvesnetlige for int. Ergo: Enten får du konvertere selv, eller så får du endre datatype. Såvidt meg bekjent er det ikke mulig å tvinge gjennom leading zeroes. Når det er sagt så antar jeg at det stregt tatt ikke er nødvendig å lagre det som int når du har krav om 0 først. Hvorfor skal det lagres som int og ikke en tekststreng?
Tomsen Skrevet 24. april 2006 Forfatter Skrevet 24. april 2006 Sitter å jobber med en litt kinki sak. Jobber på tabeller som har en verdi lagret som int, men problemet er at denne kolonnnen kan inneholde verdier som starter med 0. eks: 00229 - og da må jeg få til at det skal være 00229 og ikke 229. Vet at jeg kan gjøre om dette i en sql ved select for f.eks en utskrift, men om jeg skal generere noe rett fra den tabellen har jeg ett problem. Noen som har vært borti noe liknende, eller skjønner hva jeg mener. NB kan ikke gjøre om til string, det skal/må være int... 5977426[/snapback] Int er en tallverdi, og leading zeroes er uvesnetlige for int. Ergo: Enten får du konvertere selv, eller så får du endre datatype. Såvidt meg bekjent er det ikke mulig å tvinge gjennom leading zeroes. Når det er sagt så antar jeg at det stregt tatt ikke er nødvendig å lagre det som int når du har krav om 0 først. Hvorfor skal det lagres som int og ikke en tekststreng? 5977740[/snapback] Grunnen til at det er en int er at det er det som er bestemt for lenge siden (kan ikke si for mye da dette er et eksisterende prosjekt osv), men man tok ikke høyde for at denne kollonnen kunne trenge int'er hvor det er leading zeroes. Nå blir det auto genert rapporter etc fra en tabell hvor da disse leading zeroes mangler som gjør at det blit feil siden. Denne kollonnen skal være av lengde 5 siffer, men dersom det er en eller flere leading zeroes vil da inneholdet i kolonnen bli "forkortet" slik at det ikke er 5 siffer. Men dersom det ikke går an å tvinge int'er til å godta 0'ere i starten må jeg finne på noe annet...
pertm Skrevet 24. april 2006 Skrevet 24. april 2006 Kan du legge til en int som holder orden på antall leading 0 du har, eller ha noe kode som sørger for at det blir satt inn hvis ikke 5 siffer er brukt.
Tomsen Skrevet 24. april 2006 Forfatter Skrevet 24. april 2006 Kan du legge til en int som holder orden på antall leading 0 du har, eller ha noe kode som sørger for at det blir satt inn hvis ikke 5 siffer er brukt. 5978024[/snapback] Kan ikke legge til flere kolonner i tabellen (hvis det var det du mente), men jeg kan skrive kode (det er det som er meninga jeg skal klare...) som på en eller annen måte skal sette inn 0'ere slik at lengden (antall siffer) i kolonnen i tabellen skal være 5 uansett (om det er leading zeroes eller ikke).
roac Skrevet 24. april 2006 Skrevet 24. april 2006 Kan ikke legge til flere kolonner i tabellen (hvis det var det du mente), men jeg kan skrive kode (det er det som er meninga jeg skal klare...) som på en eller annen måte skal sette inn 0'ere slik at lengden (antall siffer) i kolonnen i tabellen skal være 5 uansett (om det er leading zeroes eller ikke). 5978068[/snapback] Jeg håper ikke jeg tråkker noen alt for hardt på tærne her, men slik problemstillingen er virker det som om det er en eller flere designfeil på ferde, så det kan kanskje være lurt å få en gjennomgang av løsningen. Du har (med vilje) unnlatt å si spesielt spesifikt om løsningen, men jeg har likevel fått følelsen av at det er noe som skurrer litt her.
genstian Skrevet 24. april 2006 Skrevet 24. april 2006 Eks (Dårlig kode, men men): if($lengde != 5) { $num = 5 - $lengde; $nystring = ''; for($i=0;$i<=$num;$i++) $nystring .= '0'; $nystring .= $string; }
roac Skrevet 24. april 2006 Skrevet 24. april 2006 Eks (Dårlig kode, men men): if($lengde != 5) { $num = 5 - $lengde; $nystring = ''; for($i=0;$i<=$num;$i++) $nystring .= '0'; $nystring .= $string; } 5979165[/snapback] evt lpad i Oracle, eller replicate i Transact-SQL. Uansett hvordan du snur og vender på det så blir det en strengbehandling
genstian Skrevet 24. april 2006 Skrevet 24. april 2006 Ja, tenkte bare at han ikke kunne gjøre det i SQL. Så da må han jo gjøre det i det språkte det skrives i.
Tomsen Skrevet 25. april 2006 Forfatter Skrevet 25. april 2006 Ja, tenkte bare at han ikke kunne gjøre det i SQL. Så da må han jo gjøre det i det språkte det skrives i. 5979406[/snapback] Takker for forslag Ingen tvil om at det er dårlig design etc og jeg føler ikke at du tråkker meg på tærne hvertfall, men sitter å forvalter et gammelt system som ikke tok høyde for disse 0'erne og det er "umulig" å gjøre om på det nå.. Så jeg fikk denne "enkle" oppgaven som en opplærings oppgave for det skulle jo være så enkelt...
siDDis Skrevet 25. april 2006 Skrevet 25. april 2006 Det må nok konverteres til string ja, kanskje kjøre to kolonner der den eine har int verdi og den andre string verdi.
roac Skrevet 25. april 2006 Skrevet 25. april 2006 Det må nok konverteres til string ja, kanskje kjøre to kolonner der den eine har int verdi og den andre string verdi. 5988520[/snapback] Bare en liten idé, du har ikke muligheten til å opprette et view og jobbe mot dette i de tilfellene du MÅ ha leading zeroes?
Tomsen Skrevet 27. april 2006 Forfatter Skrevet 27. april 2006 Det må nok konverteres til string ja, kanskje kjøre to kolonner der den eine har int verdi og den andre string verdi. 5988520[/snapback] Bare en liten idé, du har ikke muligheten til å opprette et view og jobbe mot dette i de tilfellene du MÅ ha leading zeroes? 5988921[/snapback] Sorry for sent svar... Jo, det har jeg muligheten til. Så da skal det kunne gå ann å gjøre litt convertering eller liknende i dette viewet da kanskje? Noe som f.eks: Select right( replicate("0", 5) + convert(varchar, kolonnenavn), 5) +mere kode da, men det er linja over som på en måte kan sette inn leading zeroes?
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå