Проблем:
Искате да намерите подниз, съответстващ на модел в низ.
Пример:
Нашата база данни има таблица с име клиент с данни в следните колони:id
, first_name
, last_name
и city
.
id | first_name | фамилно_име | град |
---|---|---|---|
1 | Алан | Уотсън | Мадрид |
2 | Лиза | Черно | Сингапур |
3 | Лора | Уилямс | Сиатъл |
4 | Милано | Тухла | Сеул |
Нека видим някои примери за съвпадение на шаблони в SQL.
Пример 1:
Нека покажем името, фамилията и града на всеки клиент, чието име на град започва с буквата „S“.
Решение:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%';
фамилно_име | first_name | град |
---|---|---|
Лиза | Черно | S Ингапур |
Милано | Тухла | S eoul |
Лора | Уилямс | S ядем |
Използвахме заместващия знак %, който представлява нула или повече неизвестни знаци. Този заместващ знак може да се използва навсякъде в низа.
Пример 2:
Нека покажем името, фамилията и града на всеки клиент, чието име на град съдържа точно пет знака.
Решение:
SELECT last_name, first_name, city FROM customer WHERE city LIKE '_____';
Ето резултата:
фамилно_име | first_name | град |
---|---|---|
Милано | Тухла | Сеул |
Подчертаването може да се използва за представяне на единичен неизвестен знак. По този начин, като използваме пет от тях подред, можем да представим всички низове с дължина от пет знака. В нашия пример единственият град, отговарящ на това описание, е Сеул.
Пример 3:
Нека покажем първото име, фамилията и града на всеки клиент, чийто град започва с буквата „S“ и има буквата „o“ като знак от трети до последен.
Решение:
SELECT last_name, first_name, city FROM customer WHERE city LIKE 'S%o__';
Ето резултата:
фамилно_име | first_name | град |
---|---|---|
Лиза | Черно | S inapo повторно |
Милано | Тухла | S до ул |
Заявката върна само два записа:Lisa Black от S inapo re и Milan Brick от S до ул. Тези градове отговарят на дадения модел. Тук комбинирахме и двата заместващи символа, за да генерираме по-специфичен модел:всички низове, започващи с главна буква „S“ и съдържащи произволен брой други знаци след това, стига символът от трети до последен да е малка буква „o“. '
Дискусия:
Ако искате да изберете записи, в които низ съответства на конкретен модел, можете да използвате LIKE
клауза като условие в WHERE
клауза. След WHERE
, избройте името на колоната (напр. city
), последвано от LIKE
клауза, указваща модела на низа (напр. 'S%o__'
) за търсене.
Както видяхме в примерите, можете да използвате два специални знака, известни като заместващи знаци за представяне на неизвестни знаци:
- Заместващият знак „%“ обозначава нула или повече знака.
- Заместващият знак „_“ обозначава всеки единичен знак.
Можете да комбинирате тези заместващи знаци, за да постигнете някои наистина мощни резултати. Можете също да верижите повече от един LIKE
състояние. И накрая, можете да използвате NOT
оператор за намиране на низове, които не съответстват на дадения модел.