Database
 sql >> Baza danych >  >> RDS >> Database

Operator SQL LIKE dla początkujących

W SQL LIKE operator pozwala na dopasowanie wzorca. Określa, czy określony ciąg znaków pasuje do określonego wzorca.

Wzór może zawierać zwykłe znaki i symbole wieloznaczne.

Tabela źródłowa

Poniższa tabela jest używana jako przykłady na tej stronie.

SELECT * FROM Owners;

Wynik:

+-----------+-------------+------------+----------------+-------------------+
| OwnerId   | FirstName   | LastName   | Phone          | Email             |
|-----------+-------------+------------+----------------+-------------------|
| 1         | Homer       | Connery    | (308) 555-0100 | [email protected] |
| 2         | Bart        | Pitt       | (231) 465-3497 | [email protected]  |
| 3         | Nancy       | Simpson    | (489) 591-0408 | NULL              |
| 4         | Boris       | Trump      | (349) 611-8908 | NULL              |
| 5         | Woody       | Eastwood   | (308) 555-0112 | [email protected] |
| 6         | Burt        | Tyson      | (309) 565-0112 | [email protected]  |
+-----------+-------------+------------+----------------+-------------------+

Przykład

Oto przykład pokazujący, jak LIKE operator pracuje.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%.com';

Wynik:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
+-------------+------------+-------------------+

W tym przykładzie użyłem LIKE operator w połączeniu z % operator symboli wieloznacznych do zwracania właścicieli, których adresy e-mail kończą się na .com .

LIKE może być również używany z innymi operatorami ciągów, takimi jak _ , [] i [^] .

% Operator wieloznaczny

% operator symboli wieloznacznych dopasowuje dowolny ciąg składający się z zera lub więcej znaków. Może być używany jako prefiks lub sufiks, a także może być używany w środku ciągu.

Zwykle jest używany jako sufiks i ma ograniczone zastosowanie w środku wzorców, chociaż istnieją pewne uzasadnione przypadki użycia go w środku wzorca, takie jak:

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '[email protected]%.com';

Wynik:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
+-------------+------------+------------------+

W tym przypadku nie znaliśmy adresu e-mail Barta, ale wiedzieliśmy, że zaczyna się od [email protected] i zakończył się na .com . Dlatego mogliśmy użyć LIKE w połączeniu z % operator wieloznaczny, aby wypełnić resztę.

Pamiętaj, że ta technika może zwrócić wiele nieistotnych wierszy, w zależności od danych i sposobu konstruowania instrukcji SQL.

_ Operator wieloznaczny

Podkreślenie (_ ) operator wieloznaczny pasuje do dowolnego pojedynczego znaku.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE 'b_rt';

Wynik:

+-------------+------------+------------------+
| FirstName   | LastName   | Email            |
|-------------+------------+------------------|
| Bart        | Pitt       | [email protected] |
| Burt        | Tyson      | [email protected] |
+-------------+------------+------------------+

[] Operator wieloznaczny

Nawiasy ([] ) operator symboli wieloznacznych dopasowuje dowolny pojedynczy znak z określonego zakresu lub zestawu określonego w nawiasach.

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[bh]%';

Wynik:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Boris       | Trump      | NULL              |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

Tutaj połączyłem symbol wieloznaczny nawiasów ze znakiem procentu, aby zwrócić wszystkich właścicieli, których imię zaczyna się od b lub h .

Zauważ, że operator nawiasów nie jest powszechnie stosowany w DBMS. Jest obsługiwany w SQL Server, ale nie jest obsługiwany w MySQL, Oracle, DB2 i SQLite. Sprawdź dokumentację DBMS, aby sprawdzić, czy obsługuje ten operator.

[^] Operator wieloznaczny

Znak karetki (^ ) może być użyty do zanegowania wyników przy użyciu operatora nawiasów.

Dlatego zmieniamy poprzedni przykład, aby zwracać tylko tych właścicieli, których imię nie zacznij od b lub h .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE FirstName LIKE '[^bh]%';

Wynik:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Nancy       | Simpson    | NULL              |
| Woody       | Eastwood   | [email protected] |
+-------------+------------+-------------------+

Wartości NULL

Procent (% ) symbol wieloznaczny pasuje do wszystkiego – prawie. Jedna rzecz, która nie pasuje, to NULL .

SELECT 
    FirstName,
    LastName,
    Email
FROM Owners
WHERE Email LIKE '%';

Wynik:

+-------------+------------+-------------------+
| FirstName   | LastName   | Email             |
|-------------+------------+-------------------|
| Homer       | Connery    | [email protected] |
| Bart        | Pitt       | [email protected]  |
| Woody       | Eastwood   | [email protected] |
| Burt        | Tyson      | [email protected]  |
+-------------+------------+-------------------+

W naszej tabeli znajdują się dwa wiersze z NULL w Email kolumna, ale te nie są tutaj zwracane.

Wydajność

Zapytania zawierające LIKE operator może działać znacznie wolniej niż inne zapytania i prawdopodobnie powinieneś unikać używania LIKE operatora, chyba że naprawdę tego potrzebujesz. Korzystanie z % operator jako prefiks może być szczególnie powolny.

Nie oznacza to, że w ogóle nie powinieneś go używać. LIKE Operator jest integralną częścią SQL i napotkasz wiele scenariuszy, w których będzie to jedyna opcja (lub przynajmniej najlepsza opcja).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie bardziej zaawansowanego modelu ze statusami użytkownika, wątku i postu

  2. Testowanie warstwy ODBC

  3. Przechowywana procedura pobierania informacji o pamięci serwera na serwerze

  4. Do czego służy instrukcja SQL GROUP BY?

  5. Kiedy przełączyć się na większą instancję RDS