Wyciągnięcie poszczególnych części wymiarów

0

Cześć!
Szukam sposobu, aby wyświetlić poszczególne fragmenty ciągu znaków.

W jednej komórce mam wymiary '20x100x28'. Jak mógłbym wyciągnąć pojedynczo?
Dodam tylko, że wartości są rózne więc substr() chyba raczej odpada.

0

Regexp?

0

Jak mógłbym użyć to w tym przypadku?

4

Obaj przekombinowaliśmy:

SELECT value FROM STRING_SPLIT('20x100x28', 'x');

http://sqlfiddle.com/#!18/a97ef/10

0

Dokładnie w tym samym momencie znalazłem to samo :) Dzięki!
Teraz pytanie moje jest następujące.. Chciałbym to zapisać w osobnych kolumnach na potrzeby zapytania.

,[Długość] = (case when opis_atrybut = 'bloczek' then (SELECT top 1 value FROM STRING_SPLIT(wartość, 'x')) end)
,[Szerokość] = ''
,[Wysokość] = ''

Przy takiej konfiguracji wyświetla mi tylko pierwszy parametr. Jak dalej mógłbym to zrobić?

3

Dynamicznie będzie problematyczne ale jak chcesz tylko dla tych 3 kolumn to tak:

select REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 1)) AS [x]
   , REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 2)) AS [y]
   , REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 3)) AS [z]
from test

http://sqlfiddle.com/#!18/a97ef/15

1

Bardzo, bardzo, bardzo dziękuję!

0

Cześć,
powracam z tematem z trochę zmienionym przykładem.

BLOCZW102/70_WD15

Chciałbym wciągnąć do osobnych kolumn 120 i 70. Zarówno przed '/' jak i po długość znaków może się różnić.
Czy mogę zmodyfikować jakoś powyższą składnię, aby to uzyskać?

0

Teorytycznie da się to zrobić i chętnie Ci podpowiem jak ale nie w tym temacie. Zasada forum 4programmers jest taka 1 temat / pytanie = 1 wątek na forum. Chodzi o to, że jak problem został rozwiązany to warto go oznaczyć jako rozwiązany aby inni mogli od razu stwierdzić, że ten temat ma wartościowe informacje. Wrzuć pytanie do nowego tematu to postaram się przygotować dla Ciebie rozwiązanie

0

Okej, już zakładam :)

0

@woolfik:
Mam jeszcze pytanie. Używając tych przekształceń w taki sposób tworzą nam się trzy tabele.
A jakbym chciał zrobić z tego wiersze?

0
select REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 1)) AS [x]
from test
union all
select REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 2)) AS [x]
from test
union all
select REVERSE(PARSENAME(REPLACE(REVERSE(txt), 'x', '.'), 3)) AS [x]
from test

http://sqlfiddle.com/#!18/a97ef/16

Lub tak jak tu ci podałem
Wyciągnięcie poszczególnych części wymiarów

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