MSSQL - aktualizacja kolejnych pól na podstawie wybranych fragmentów pierwszego pola

0

cześć wszystkim,

potrzebuję uzupełnić pola parametrów na podstawie fragmentów nazwy. wszystko odbywa się w jednej tabeli

K1_nazwa - 'XX YY ZZ-BBBB 1/22/333/kl.GG/ccccc'

w K2_p1 chciałbym umieścić ZZ-BBBB (znaki między druga a trzecią spacją)
w k3_p2 chciałbym umieścić znaki między trzecią spacją a pierwszym '/'
w k4_p3 chciałbym umieścić znak po kropce - z ciągu między trzecim ukośnikiem a czwartym
w k5_p4 chciałbym umieścić znaki od ostatniego ukośnika do końca

wszelkie sugestie i podpowiedzi mile widziane ;)
dzięki z góry

0

Która wersja SQL Servera?

0

2014

1

Musisz skorzystać z funkcji: right.left,charindex,reverse, aby nie meczyc sie zbytnio uzyj takiej funckji: https://www.resultdata.com/sql-server-finding-the-nth-instance-of-a-string/

i wykorzystaj:

with tab as (
select 'XX YY ZZ-BBBB 1/22/333/kl.GG/ccccc' as K1_nazwa
)

select 
k1_nazwa
,dbo.NTH_WORD(k1_nazwa,' ',3) k2_p1
,left(dbo.NTH_WORD(k1_nazwa,' ',4),charindex('/',dbo.NTH_WORD(k1_nazwa,' ',4))-1) k3_p2
,substring(dbo.NTH_WORD(k1_nazwa,'/',4),charindex('.',dbo.NTH_WORD(k1_nazwa,'/',4))+1,1) k4_p3
,right(k1_nazwa,charindex('/',REVERSE(k1_nazwa))-1) k5_p4
from tab 

wynik

k1_nazwa k2_p1 k3_p2 k4_p3 k5_p4
XX YY ZZ-BBBB 1/22/333/kl.GG/ccccc ZZ-BBBB 1 G ccccc

Musisz tylko uważać, bo charindex jak nic nie znajdzie to zwraca 0...

1 użytkowników online, w tym zalogowanych: 0, gości: 1