Wyciąganie fragmentu tekstu

0

Próbuję wyciągnąć fragment tekstu, dokładnie wartość liczbową - ilość cali.

Przykładowy tekst: Tablet IPAD PRO 10.5" /HG LITE
Czasami jest też: Tablet Samsung Galaxy S4 10" T530 /HG

Próbowałem zrobić to w taki sposób:

substring (ar.name, charindex('"',ar.name)-2, 3) 'Wielkość'

Ale okazało się, że cale są zapisane na różne sposoby, więc wyciągam to za pomocą następującego ciągu:

substring (ar.name, patindex('%['',"]%',ar.name)-2, 3) 'Wielkość'

Czyli podwójny oraz pojedynczy apostrof.

Wyświetla fajnie pozycję, które nie są oddzielone przecinkiem lub kropką. I za bardzo nie wiem w jaki sposób wyciągnąć również te rozmiary rozdzielone przecinkiem/kropką. Myślałem, że może po pierwszym wystąpieniu liczby, ale niestety wcześniej przed rozmiarem może znaleźć się jakaś inna liczba określająca model urządzenia.
Również przed / potrafi znaleźć się coś innego niż wielkość ekranu, np rocznik, ilość sztuk, itp.

Może będziecie mieli jakiś pomysł jakby to ugryźć.

0

Regexpem spróbuj. Aczkolwiek z apostrofa mi musisz zakombinować trochę.

0

Powinno zadziałać '[ ][0-9]+(.|,)?[0-9]+["]'

1

Zakładając, że przed wartościami z calami masz spcaje to można tak:

select 
     reverse(left(reverse(left(d,patindex('%[''"]%',d)-1)),charindex(' ',reverse(left(d,patindex('%[''"]%',d)-1)))))
     from tab

https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=4935a57ff15ae12f4a77ae76ea03d810

Oczywiście musisz się zabezpieczyć i sprawdzić czy występuje w tekście ' lub "

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