RulleRimfrost Skrevet 17. november 2009 Del Skrevet 17. november 2009 Jeg bruker MS sql, og SSIS for automatisering. En query trekker ut data som skrives til en Excel-rapport. Excel har en max limit pr celle på 4000 tegn, men av en eller annen grunn feiler queryen når jeg prøver å legge "00" foran organisasjonsnummer (gjøre om til 11 siffer i query) SSIS påstår at følgende select produserer varchar(8000) ? SELECT REPLICATE('0', 11 - DATALENGTH(k.orgnr)) + k.orgnr Om jeg bare bruker "SELECT k.orgnr" så funker det fint. Hvorfor det? Lenke til kommentar
blackbrrd Skrevet 18. november 2009 Del Skrevet 18. november 2009 Litt ukjent med MS Sql, men kan det være at DATALENGTH(k.orgnr) returnerer tall høyere enn 11? Kjøre en select som denne for å sjekke det: SELECT DATALENGTH(k.orgnr) Lenke til kommentar
RulleRimfrost Skrevet 18. november 2009 Forfatter Del Skrevet 18. november 2009 Ay ay. DATALENGTH returnerer antall byte, mens LEN returnerer antall tegn. Mulig det er feilen. Takk, får sjekke det når jeg ser igjen serveren min i morgen. Lenke til kommentar
kaffenils Skrevet 18. november 2009 Del Skrevet 18. november 2009 Hvilken datatype bruker du i orgnr? varchar eller nvarchar? Varchar bruker en byte per tegn, mens nvarchar er unicode og benytter 2 bytes per tegn. datalenght vil returnere 3 for strenger "hei" hvis datatype er varchar, mens den vil returnere 6 for samme streng hvis datatype er nvarchar. Lenke til kommentar
RulleRimfrost Skrevet 19. november 2009 Forfatter Del Skrevet 19. november 2009 Original tabell er VARCHAR(12). Når jeg la inn : CONVERT(VARCHAR(11), REPLICATE('0', 11 - DATALENGTH(k.orgnr)) + k.orgnr) Så fungerte det... Ser ut til at SSIS sliter med å hente ut datatype om man benytter string-manipulasjon i spørring. Lenke til kommentar
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å