Wyciąganie fragmentu tekstu

Wyciąganie fragmentu tekstu
LI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 87
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:

Kopiuj
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:

Kopiuj
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źć.

kate87
  • Rejestracja: dni
  • Ostatnio: dni
0

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

DB
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 36
0

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

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

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

Kopiuj
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 "

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.