SQL jak pobrać treść zawartą między określonymi znakami? HOW-TO
Zdarza się czasami, że należy zrobić coś bardziej zaawansowanego w SQL niż pobranie danych zwykłym SELECTEM z prostymi warunkami. Takie sytuacje niestety zdarzają mi się coraz częściej :/ Ostatni przypadek dotyczył wyciągnięcia numeru telefonu zawartego w nazwie użytkownia w kolumnie, która wyglądała mniej więcej tak:
Nazwa
- – - – -
Tomasz Kowalski (1234)
Jarek Nowak (345672)
Sebastian Nowacki (234)
itd
Jak widać nr nie zawsze jest tej samej długości (odpadają funkcje RIGHT i SUBSTRING), ale zawsze jest zawarty w nawiasach (na szczęście). W necie znalazłem kilka sposobów na wyłuskanie tych danych, zwłaszcza przy wykorzystaniu funkcji WHILE itd itp, ale po analizie przypadku stwierdziłem, że da się to zrobić lepiej i tak powstał poniższy kod.
SELECT
SUBSTRING(Nazwa,(CHARINDEX('(',Nazwa))+1,(CHARINDEX(')',Nazwa))-(CHARINDEX('(',Nazwa))-1)as NR_TEL FROM...Używajcie zapytania do woli bez żadnych ograniczeń, oczywiście po niezbędnych modyfikacjach, pod kątem Waszego przypadku(Nazwa – zmianiacie na nazwę kolumny w Waszej tabeli). Nawias możecie zastąpić dowolnym znakiem zmieniając wartości ‘)’ i ‘(‘.
W: Kodowanie, Technologia · Tagi: brackets, extracting data, nawiasy, pobieranie danych, query, SQL, zapytanie

