Mam do realizacji funkcjonalność, w której jedną z kolumn w tabeli trzeba uzupełnić na podstawie innych danych po wstawieniu rekordu (redundancja danych, ale nie wszystkie komponenty systemu będą miały dostęp do pozostałych tabel, odpada też możliwość stworzenia widoku lub udostępnienia procedury łączącej i zwracającej dane).

W tym celu napisałem trigger uruchamiany po insercie w tej tabeli i jest prawie dobrze, ale... jak to zwykle bywa największym problemem systemów informatycznych są użytkownicy, więc mam taką tabelę:

Id int Value nvarchar() [Dane wprowadzane przez użytkowników]
1 98238;21314 ;12345
2 ; 2342;23432;dupa
3 ;;1234452;; ;;

I chciałbym z niej w optymalny sposób w trakcie wykonania triggera otrzymać matrycę do porównania, potrzebuję coś takiego:

Id Value
1 98238
1 21314
1 12345
2 2342
2 23432
3 dupa (rekordy nie parsujące się do inta opcjonalnie mogą pozostać po prostu nigdy nie podpasują do matrycy, nie powinno też ich być dużo)
3 1234452

Czy podsumowując coś ala iloczyn kartezjański z pominięciem pustych wartości (akurat to jest ok można załatwić LTRIM/RTRIM).

Znalazłem kilka rozwiązań rzutujących wartości na XML'a, a potem SPLIT po znaku, ale może ktoś miał już taki problem i da się to rozwiązać jakoś bardziej elegancko.
Pozdrawiam