90 lines
5.1 KiB
Markdown
90 lines
5.1 KiB
Markdown
|
---
|
|||
|
title: SQL LIKE Operator
|
|||
|
localeTitle: Оператор SQL LIKE
|
|||
|
---
|
|||
|
## Оператор SQL LIKE
|
|||
|
|
|||
|
### LIKE Определенный оператор
|
|||
|
|
|||
|
Оператор `LIKE` используется в `WHERE` или `HAVING` (как часть `GROUP BY` ), чтобы ограничить выбранные строки элементами, когда столбец имеет определенный шаблон символов, содержащихся в нем.
|
|||
|
|
|||
|
### Это руководство продемонстрирует:
|
|||
|
|
|||
|
* Определение того, начинается или заканчивается строка с заданным шаблоном строки
|
|||
|
* Определение наличия шаблона в середине строки
|
|||
|
* Определение, если строка не содержится в строке
|
|||
|
|
|||
|
### Столбец начинается или заканчивается заданной строкой строки
|
|||
|
|
|||
|
Этот SQL будет выбирать студентов, у которых есть `FullName` начиная с «Monique» или заканчивая «Greene».
|
|||
|
|
|||
|
```sql
|
|||
|
SELECT studentID, FullName, sat_score, rcd_updated
|
|||
|
FROM student
|
|||
|
WHERE
|
|||
|
FullName LIKE 'Monique%' OR -- note the % at the end but not the beginning
|
|||
|
FullName LIKE '%Greene'; -- note the % at the beginning but not the end
|
|||
|
```
|
|||
|
|
|||
|
```text
|
|||
|
+-----------+---------------+-----------+---------------------+
|
|||
|
| studentID | FullName | sat_score | rcd_updated |
|
|||
|
+-----------+---------------+-----------+---------------------+
|
|||
|
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
|
|||
|
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
|
|||
|
+-----------+---------------+-----------+---------------------+
|
|||
|
2 rows in set (0.00 sec)
|
|||
|
```
|
|||
|
|
|||
|
### Строковый шаблон находится в середине столбца
|
|||
|
|
|||
|
Этот SQL будет выбирать студентов, которые имеют «ree» в любом месте в названии.
|
|||
|
|
|||
|
```sql
|
|||
|
SELECT studentID, FullName, sat_score, rcd_updated
|
|||
|
FROM student
|
|||
|
WHERE FullName LIKE '%ree%'; -- note the % at the beginning AND at the end
|
|||
|
```
|
|||
|
|
|||
|
```text
|
|||
|
+-----------+----------------+-----------+---------------------+
|
|||
|
| studentID | FullName | sat_score | rcd_updated |
|
|||
|
+-----------+----------------+-----------+---------------------+
|
|||
|
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
|
|||
|
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
|
|||
|
+-----------+----------------+-----------+---------------------+
|
|||
|
2 rows in set (0.00 sec)
|
|||
|
```
|
|||
|
|
|||
|
### Строка НЕ находится в столбце
|
|||
|
|
|||
|
Вы можете поместить «NOT» перед LIKE, чтобы исключить строки с шаблоном строки вместо их выбора. Этот SQL исключает записи, содержащие «cer Pau» и «Ted» в столбце FullName.
|
|||
|
|
|||
|
```sql
|
|||
|
SELECT studentID, FullName, sat_score, rcd_updated
|
|||
|
FROM student
|
|||
|
WHERE FullName NOT LIKE '%cer Pau%' AND FullName NOT LIKE '%"Ted"%';
|
|||
|
```
|
|||
|
|
|||
|
```text
|
|||
|
+-----------+----------------------+-----------+---------------------+
|
|||
|
| studentID | FullName | sat_score | rcd_updated |
|
|||
|
+-----------+----------------------+-----------+---------------------+
|
|||
|
| 1 | Monique Davis | 400 | 2017-08-16 15:34:50 |
|
|||
|
| 2 | Teri Gutierrez | 800 | 2017-08-16 15:34:50 |
|
|||
|
| 4 | Louis Ramsey | 1200 | 2017-08-16 15:34:50 |
|
|||
|
| 5 | Alvin Greene | 1200 | 2017-08-16 15:34:50 |
|
|||
|
| 6 | Sophie Freeman | 1200 | 2017-08-16 15:34:50 |
|
|||
|
| 8 | Donald D. Chamberlin | 2400 | 2017-08-16 15:35:33 |
|
|||
|
| 9 | Raymond F. Boyce | 2400 | 2017-08-16 15:35:33 |
|
|||
|
+-----------+----------------------+-----------+---------------------+
|
|||
|
7 rows in set (0.00 sec)
|
|||
|
```
|
|||
|
|
|||
|
_Вот текущий полный список студентов, чтобы сравнить с приведенными выше результатами предложения where._
|
|||
|
|
|||
|
```sql
|
|||
|
SELECT studentID, FullName, sat_score, rcd_updated FROM student;
|
|||
|
```
|
|||
|
|
|||
|
\`\` \`Текст + ----------- + ------------------------ + ----------- + --------------------- + | studentID | FullName | счётчик _| rcd_ обновлено | + ----------- + ------------------------ + ----------- + --------------------- + | 1 | Моник Дэвис | 400 | 2017-08-16 15:34:50 | | 2 | Тери Гутьеррес | 800 | 2017-08-16 15:34:50 | | 3 | Спенсер Потье | 1000 | 2017-08-16 15:34:50 | | 4 | Луи Рэмси | 1200 | 2017-08-16 15:34:50 | | 5 | Элвин Грин | 1200 | 2017-08-16 15:34:50 | | 6 | Софи Фримен | 1200 | 2017-08-16 15:34:50 | | 7 | Эдгар Фрэнк «Тед» Кодд | 2400 | 2017-08-16 15:35:33 | | 8 | Дональд Д. Чемберлен | 2400 | 2017-08-16 15:35:33 | | 9 | Раймонд Ф. Бойс | 2400 | 2017-08-16 15:35:33 | + ----------- + ------------------------ + ----------- + --------------------- + 9 строк в наборе (0,00 сек)
|