21. juni 2006 - 16:23
Der er
15 kommentarer og 1 løsning
VarChar kontra Char - Fjerne overskydende mellemrum ved udtræk
1. Jeg har en tabel i MS SQL, der indeholder en char(50) 2. Jeg trækker varchar-data ud i .NET Hvis jeg kun har brugt f.eks. 4 tegn, er de resterende tegn mellemrum. Jeg får altså en streng der ser ud som følger: "1234 " Dette gør, at jeg er nød til at fjerne mellemrum manuelt ved at bruge String.Replace(" ", "") som udskifter hvert mellemrum med ingenting. Er der en smart måde at sørge for ikke at få overskydende mellemrum med ved udtræk ? På forhånd tak
Annonceindlæg fra SoftwareOne
hvad sker der hvis du angiver feltet som Char i .NET ? ellers er s = s.TrimEnd(" ".ToCharArray()); nok paenere
det ER skam angivet som Char. med SqlDataType.Char Alligevel får man alle de mellemrum. Men kan det virkelig passe at det er nødvendigt for brugeren selv at trimme strengen? Det finder jeg hverken kønt eller brugervenligt.
En CHAR er jo et fast laengde felt, hvis man vil have variabel laengde bruger man VARCHAR.
Dvs det er almindeligt at man trimmer tekstrengen i koden når man bruger CHAR?
Havde forestillet mig det kunne ske automatisk et eller andet sted fra .NETs side
Jeg mener faktisk at nogle database selv trimmer trailing spaces af returnerede CHAR columns. Men jeg kender ikke nogen smart option til ADO.NET ...
Du kan trimme det i din SQL: SELECT LTRIM(strCharField) AS strCharField FROM Tabel
Undskyld det skulle være RTRIM
Well har valgt at bruge NVARCHAR istedet for char for overskuelighedens skyld, så det sikres, at der ikke opstår fejl i forbindelse med sammenligning af strengen pga. mellemrum. Men læg et svar begge to :)
22. juni 2006 - 10:17
#10
Nej tak, ikke for så lidt. Jeg vælger også at bruge varchar. Grunde til at bruge char: Performance, databasen ved præcis hvor meget hver post fylder, derfor kan den optimere datafilerne og indexerne bedre (har jeg hørt) Brug for at lave tekstudtræk med fixed length i stedet for en delimitter.
22. juni 2006 - 10:19
#11
jeps, well det skulle være pga. performance at det skulle vælges i dette tilfælde. Men ulempen er for stor, i de tilfælde man glemmer at trimme en VARCHAR. :)
22. juni 2006 - 11:06
#12
At vælge datatype udfra programmørens forventede glemsomhed, tja ... :o)
22. juni 2006 - 15:01
#13
haha, ja :D
23. juni 2006 - 02:17
#14
og performance forbedringen eksisterer kun hvis VARCHAR'en er næsten fyldt op hvis ikke den er det så giver den mindre størrelse mindre disk IO og dermed bedre performance med VARCHAR
23. juni 2006 - 02:18
#15
et svar fra mig
23. juni 2006 - 12:07
#16
oki, tak for hjælpen begge :) Her er point til dig, Arne.
Computerworld tilbyder specialiserede kurser i database-management