SQL LIKE SQL Server Oracle SQL Fiddle
Znáte všechny taje, které SQL operátor LIKE
nabízí? Vsadíme se, že o některých možná ani nevíte! 😉
Všechny příklady z tohoto návodu si můžete vyzkoušet on-line. Pro naše účely totiž bohatě postačí on-line databáze SQL Fiddle. Název v tomto případě přesně označuje účel. Fiddle totiž znamená hrát si.
Vytvořte si tabulku s daty
Zkopírujte následující kód a vložte do levé části SQL Fiddle. Pak klikněte na tlačítko Build Schema. Vytvoří se tabulka i s několika testovacími řádky.
CREATE TABLE students
(
id INT,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
INSERT INTO students VALUES (1, 'Jana', 'Dvořáková');
INSERT INTO students VALUES (2, 'Steve', 'Jobs');
INSERT INTO students VALUES (3, 'Jan', 'Novák');
INSERT INTO students VALUES (4, 'John', 'Lennon');
INSERT INTO students VALUES (5, 'Bill', 'Gates');
INSERT INTO students VALUES (6, 'Paul', 'McCartney');
INSERT INTO students VALUES (7, 'JAN_ADAM', 'V.');
INSERT INTO students VALUES (8, 'XXX', 'yk%m*6%_a');
Vlastní SQL příkazy potom budete psát do pravé části a spouštět tlačítkem Run SQL.
Syntaxe
Syntaxe operátoru LIKE
není složitá.
% |
Procento nahrazuje více znaků nebo také žádný znak. |
_ |
Podtržítko nahrazuje jeden libovolný znak. |
\ |
Zpětné lomítko je tzv. Escape znak. Díky němu můžeme vyhledávat v řetězci znaky `%` a `_`. |
Příklady
Křestní jména začínající na "J"
SELECT * FROM students
WHERE first_name LIKE 'J%';
| id | first_name | last_name |
|----|------------|-----------|
| 1 | Jana | Dvořáková |
| 3 | Jan | Novák |
| 4 | John | Lennon |
| 7 | JAN_ADAM | V. |
Příjmení, která obsahují "a"
SELECT * FROM students
WHERE last_name LIKE '%a%';
| id | first_name | last_name |
|----|------------|-----------|
| 5 | Bill | Gates |
| 6 | Paul | McCartney |
| 8 | XXX | yk%m*6%_a |
Příjmení, která neobsahují "a"
SELECT * FROM students
WHERE last_name NOT LIKE '%a%';
| id | first_name | last_name |
|----|------------|-----------|
| 1 | Jana | Dvořáková |
| 2 | Steve | Jobs |
| 3 | Jan | Novák |
| 4 | John | Lennon |
| 7 | JAN_ADAM | V. |
Křestní jména, které mají jako 2. písmeno "a"
SELECT * FROM students
WHERE first_name LIKE '_a%';
| id | first_name | last_name |
|----|------------|-----------|
| 1 | Jana | Dvořáková |
| 3 | Jan | Novák |
| 6 | Paul | McCartney |
Příjmení, která mají délku 5 znaků
SELECT * FROM students
WHERE last_name LIKE '_____';
| id | first_name | last_name |
|----|------------|-----------|
| 3 | Jan | Novák |
| 5 | Bill | Gates |
Křestní jména nebo příjmení, která obsahují podtržítko "_"
SELECT * FROM students
WHERE first_name LIKE '%\_%'
OR last_name LIKE '%\_%';
| id | first_name | last_name |
|----|------------|-----------|
| 7 | JAN_ADAM | V. |
| 8 | XXX | yk%m*6%_a |
Příjmení, která obsahují "%"
SELECT * FROM students
WHERE last_name LIKE '%\%%';
| id | first_name | last_name |
|----|------------|-----------|
| 8 | XXX | yk%m*6%_a |
Poznámka: U některých databází, např. SQL Server nebo Oracle, je nutné uvést klíčové slovo ESCAPE.
SELECT * FROM students
WHERE last_name LIKE '%\%%' ESCAPE '\';