wtorek,
SQL: Wieloznaczniki
W języku SQL wieloznaczniki (ang. wildcards) są używane w połączeniu z operatorem LIKE
w celu filtrowania wyników zapytania zgodnie z określonym wzorcem. Są one często stosowane w zapytaniach SELECT
, aby wyszukiwać i dopasowywać dane zawierające określone sekwencje znaków. Szczegóły działania wieloznaczników mogą różnić się w zależności od używanego systemu zarządzania bazą danych (RDBMS). Należy zawsze sprawdzić dokumentację konkretnego RDBMS, aby upewnić się, jakie wieloznaczniki są dostępne i jak dokładnie działają.
Najczęściej używane wieloznaczniki w SQL
Procent (%)
Reprezentuje zero, jeden lub wiele znaków. Może być użyty na początku, na końcu lub w środku wzorca do wyszukania. Na przykład:
'a%'
dopasuje wszystkie wartości zaczynające się od "a".'%a'
dopasuje wszystkie wartości kończące się na "a".'%or%'
dopasuje wszystkie wartości zawierające ciąg "or".
Podkreślenie (_)
Reprezentuje dokładnie jeden dowolny znak. Jest używany, gdy znamy dokładną długość szukanego wzorca, ale nie wszystkie znaki są nam znane. Na przykład:
'a_'
dopasuje wszystkie wartości, które mają dwa znaki, pierwszy z nich to "a".'__a'
dopasuje wszystkie wartości, które mają trzy znaki, ostatni z nich to "a".
Znak zapytania (?)
W niektórych wersjach SQL takich jak Microsoft Access, znak zapytania działa podobnie jak podkreślenie w standardowym SQL, oznaczając jeden dowolny znak.
Zestaw znaków ([])
W niektórych dialektach SQL, np. w Microsoft Access, można używać nawiasów kwadratowych do określenia dowolnego pojedynczego znaku z określonego zakresu (np. [a-c]
) lub zestawu (np. [abc]
). To zachowanie jest podobne do wyrażeń regularnych.
Znak ^ wewnątrz zestawu znaków ([^])
Używany w niektórych systemach, jak Microsoft Access, do wykluczenia znaków. Na przykład, [^a]
oznacza dowolny znak, który nie jest "a".
Przykłady
Prezentowane przykłady obejmują użycie wieloznaczników % i _ w SQL przy użyciu operatora LIKE, który pozwala na wyszukiwanie wzorców w tekście. Używanie %
i _
może wpłynąć na wydajność, szczególnie w dużych bazach danych, ponieważ zapytania z tymi wieloznacznikami mogą być kosztowne pod względem przetwarzania. Zaleca się stosowanie ich z rozwagą, szczególnie w dużych tabelach lub w środowiskach produkcyjnych.
Wieloznacznik %
Znalezienie rekordów zaczynających się od określonego znaku:
SELECT * FROM tabela
WHERE kolumna LIKE 'A%';
Znajduje wszystkie rekordy w kolumnie, które zaczynają się na literę "A". Na przykład, dopasuje "Adam", "Ania", ale nie "Tomasz".
Znalezienie rekordów kończących się na określone znaki:
SELECT * FROM tabela
WHERE kolumna LIKE '%a';
Dopasuje wszystkie rekordy kończące się literą "a", jak "Anna", "Olga", ale nie "Jan".
Znalezienie rekordów zawierających określony ciąg znaków:
SELECT * FROM tabela
WHERE kolumna LIKE '%or%';
Dopasuje wszystkie rekordy, które gdziekolwiek zawierają ciąg "or", np. "korporacja", "formularz" czy "kolor".
Wieloznacznik _
Znalezienie rekordów, gdzie określony znak na danej pozycji to konkretna litera:
SELECT * FROM tabela
WHERE kolumna LIKE 'a_c';
Dopasuje rekordy, gdzie pierwsza litera to "a", trzecia to "c", a pomiędzy nimi jest dokładnie jeden dowolny znak, np. "abc", "acc".
Znalezienie rekordów, gdzie dokładnie dwa znaki na początku, a potem konkretna litera:
SELECT * FROM tabela
WHERE kolumna LIKE '__a%';
Dopasuje rekordy, które zaczynają się od dowolnych dwóch znaków, po których następuje litera "a", np. "xxapple", "yzak".