Obsługuję proces ETL, który przekształca wejściowe pliki płaskie w tabelę bazy danych SqlServer. Kod jest prawie w 100% T-SQL i działa wewnątrz DB. Nie jestem właścicielem kodu i nie mogę zmienić przepływu pracy. Mogę tylko pomóc skonfigurować "tłumaczenie" SQL, który pobiera dane pliku i konwertuje je do danych tabeli (więcej o tym później).Przekształcanie/Przesyłanie nVarChar z separatorem przecinków na dziesiętne
Teraz, klauzule są na uboczu ...
Jeden z naszych dostawców plików niedawno zmienił sposób stanowią one kwotę pieniężną z '12345.67'
do '12,345.67'
. Nasz SQL, który przekształca wartość, wygląda na SELECT FLOOR(CAST([inputValue] AS DECIMAL(24,10)))
i już nie działa. Tj. Przecinek przerywa obsadę.
Biorąc pod uwagę, że mam do przechowywania wartości końcowej jako Decimal (24,10)
typu danych (tak, ja sobie sprawy FLOOR
wymazuje wszystkie precyzję post-dziesiętny-punktową - projektant nie był zsynchronizowany z klientem), co mogę zrobić skutecznie obsłużyć ten ciąg? "
Dziękuję za Twoje pomysły.
czy któraś z tych odpowiedzi rozwiązała Twój problem? –
@KM: Omawiam teraz te sugestie z naszą grupą DBA. Z mojego punktu widzenia, wspólne podejście zaproponowane (używając Replace()) wydaje się działać. Zaktualizuje się wkrótce. – SethO