SQL Serveren
Forhistorien er, at vi fik en forespørgsel gående på at når et blob objekt i NAV blev trukket ud via SQL Query så blev resultatet ikke konverteret korrekt til danske bogstaver, og man ville selvfølgelig gerne bibeholde bla æ, ø og å. Den nærtliggende konvertering er:
CAST(@blob AS NVARCHAR(MAX))
CONVERT(NVARCHAR(MAX),@blob)
Hvilket giver dette resultat:
Jeg kan godt afsløre at det ikke giver det ønskede resultat 😊
Nå, men næste forsøg er at prøve med varchar:
1. CAST(@blob AS VARCHAR(MAX))
2. CONVERT(VARCHAR(MAX),@blob)
Løsning gennem C class og CLR
Nu er vi på rette vej, dog er der stadig udfordringer med æ, ø og å.
Jeg forsøgte mig efterfølgende med at skrive en funktion hvor jeg lavede en replace på de specialtegn så det blev rigtig tekst, men jeg syntes ikke det var den bedste løsning. Et alternativ kunne være at skrive en C# class og så via CLR konvertere det i SQL. Men jeg var opsat på at finde en simplere løsning.
Jeg kiggede i diverse forum efter hints til en løsning, hvilket ledte mig ind på at konvertere til XML.
1. CAST(@blob as XML)
Hvilket giver dette fine resultat:
Herfra er det bare at caste videre til VARCHAR eller NVARCHAR og så har jeg det ønskede resultat:
1. CAST(CAST@blob as XML) AS VARCHAR(MAX))
XML som løsning
Jeg havde nok ikke troet at denne omvej via en cast til XML var en løsning, men det er det jo tydeligvis 😊
Skulle du have lyst til at læse om hvordan SQL Serveren konverteret til XML så kan det læses på docs: link
Har du også en udfordring, der driller så tag endelig fat i mig eller en af mine dygtige kollegaer i Unit IT, du kan fange os på tlf.: 88 333 333.