woensdag 11 juni 2008

Records met karakter data ophalen

Situatie:

Bij het inlezen van een txt file met behulp van DTS of SSIS krijg ik een error dat de conversie van een vld naar numeriek niet goed gaat.
De error melding is:
General conversion failure on column pair 14 (source column '[kolomnaam]' (DBTYPE_STR), destination column '[kolomnaam]' (DBTYPE_NUMERIC)).

In de specificatie voor het aan te leveren input tekst bestand is aangegeven dat deze kolom alleen numerieke tekens mag bevatten.

De vraag:

Hoe vindt ik nu het record dat dit probleem veroorzaakt?

De Oplossing:
  1. Maak een DTS / SSIS package die het tekst bestand inleest naar een volledig varchar based tabel.
  2. Maak gebruik van patindex voor het vinden van het niet numerieke record.

SELECT [kolomnaam] FROM Willekeurige_Tabel WHERE PATINDEX('%[^0-9]%',[kolomnaam])=1

Waarom ^[0-9]? Omdat het makelijker is dan de reguliere expressie om een karakter teken op te zoeken...

BOL patindex : http://msdn.microsoft.com/en-us/library/ms188395.aspx

Geen opmerkingen: