Gå til innhold

Anbefalte innlegg

Skrevet

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...

Videoannonse
Annonse
Skrevet
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?

Skrevet
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...

Skrevet

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.

Skrevet
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).

Skrevet
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.

Skrevet
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 :)

Skrevet
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...

Skrevet
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?

Skrevet
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?

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...