Wpis z mikrobloga

Jak w 'Like' wyszukać "o numerach rejestracyjnych rozpoczynających się od SC i posiadających cyfry na 3-ich pozycjach".
Czyli zaczyna sie SC a potem jakaś cyfra.
#sql
  • 9
  • Odpowiedz
Nie pracowalem nigdy z oracle, ale wpisalbym cos takiego:

regexp_like(nk, 'SC+[0-9]{a,b}$')

nk - nazwa kolumny z rejestracjami
a-minimalna ilosc cyfr, czyli np 1
b-maksymalna ilosc cyfr, czyli np 10
  • Odpowiedz
@sentoxo: to jest dobra odpowiedź. Oracle nei znam ale standard sql to standard.
ewentualnie spróbuj LIKE '%SC[0-9]%' albo rozmiar liter sprawdz moze jest CASE Sensitive albo jakies Collation ustawione
  • Odpowiedz
@obieq: ale bzdury opowiadasz "like" nie jest w stanie obsluzyc wyrażeń regularnych potraktuje to [0-9] dosłownie jako tekst :)
tylko funkcje z prefiksem regexp sa w stanie obsłużyć wyrażenie regularne jak np regexp_like :)
  • Odpowiedz
@doktor_poziomka: wtf? napisalem, ze w kontekscie Oracle nie jestem pewien, ale to powinno być w standardzie -w M$ działą bez problemu. Tak samo działa z liczbami [0-9] można szukać nr tel: [0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9] albo działa też LIKE '[^0-9]%' (coś co nie zaczyna się liczbą). To nie jest regexp, ale jego mocno ograniczona wersja
https://docs.microsoft.com/en-us/sql/t-sql/language-elements/like-transact-sql?view=sql-server-2017

[ ] Any single character within the specified range ([a-f]) or set ([abcdef]). WHERE au_lname LIKE '[C-P]arsen' finds
  • Odpowiedz