Skip to content
Snippets Groups Projects
Commit 58d76ac6 authored by Alexander Tolstoy's avatar Alexander Tolstoy
Browse files

like.md: new document

parent e6ef59c5
No related branches found
No related tags found
1 merge request!577LIKE, ILIKE, LOWER/UPPER
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
# LIKE
Выражение `LIKE` используется в [SELECT](select.md)-запросах для проверки
соответствия строк шаблону символов. При совпадении возвращается `true`,
в противном случае — `false`. Для проверки подходят только столбцы,
имеющие [строковый тип данных](../sql_types.md#text).
## Синтаксис {: #syntax }
![LIKE](../../images/ebnf/like.svg)
### Выражение {: #expression }
??? note "Диаграмма"
![Expression](../../images/ebnf/expression.svg)
### Литерал {: #literal }
??? note "Диаграмма"
![Literal](../../images/ebnf/literal.svg)
## Примеры использования {: #using_examples }
### Простая проверка {: #simple_like }
Пример точного совпадения последовательности символов:
```sql
SELECT type LIKE 'light' FROM warehouse
```
??? note "Результат"
```shell
+-------+
| col_1 |
+=======+
| false |
|-------|
| false |
|-------|
| true |
|-------|
| true |
|-------|
| true |
+-------+
(5 rows)
```
### Подсчет количества совпадения {: #count_like }
Можно также использовать `LIKE` для подсчета количества совпадений.
Пример:
```sql
SELECT COUNT(*) FROM warehouse WHERE type LIKE 'light'
```
??? note "Результат"
```shell
+-------+
| col_1 |
+=======+
| 3 |
+-------+
(1 rows)
```
### Использование подстановочных знаков {: #wildcards_like }
Существует два подстановочных знака, которые используются в сочетании с
выражением `LIKE`:
- `%` — _знак процента_ обозначает любое количество любых символов
- `_` — _подчеркивание_ обозначает любой один символ
Пример:
```sql
SELECT item LIKE '%l%s' OR type LIKE 'ligh_' FROM warehouse
```
??? note "Результат"
```sql
+-------+
| col_1 |
+=======+
| false |
|-------|
| true |
|-------|
| true |
|-------|
| true |
|-------|
| true |
+-------+
(5 rows)
```
### Экранирование {: #escape_chars }
Экранирование необходимо в тех случаях, когда нужно найти в строке
буквальное вхождение знака процента или подчеркивания. Для этого перед
соответствующим символом в шаблоне нужно добавить спецсимвол. По
умолчанию в качестве спецсимвола выбрана обратная косая черта (`\`):
```sql
CREATE TABLE str(n string primary key)
INSERT INTO str VALUES ('product'), ('product%'), ('*product')
SELECT n FROM str WHERE n LIKE 'product\%'
```
??? note "Результат"
```sql
+------------+
| n |
+============+
| "product%" |
+------------+
(1 rows)
```
C помощью предложения `ESCAPE` можно выбрать и другой спецсимвол (букву, знак
пунктуации, но не цифру):
```sql
SELECT n FROM str WHERE n like 'product*%' ESCAPE '*'
```
??? note "Результат"
```sql
+------------+
| n |
+============+
| "product%" |
+------------+
(1 rows)
```
Чтобы включить спецсимвол в шаблон поиска, его следует продублировать:
```sql
SELECT n FROM str WHERE n like '**product' ESCAPE '*'
```
??? note "Результат"
```sql
+------------+
| n |
+============+
| "*product" |
+------------+
(1 rows)
```
......@@ -49,6 +49,7 @@
* [Агрегатные функции](reference/sql/aggregate.md)
* [CASE](reference/sql/case.md)
* [CAST](reference/sql/cast.md)
* [LIKE](reference/sql/like.md)
* [SUBSTR](reference/sql/substr.md)
* [TRIM](reference/sql/trim.md)
......
......@@ -102,6 +102,7 @@ nav:
- reference/sql/aggregate.md
- reference/sql/case.md
- reference/sql/cast.md
- reference/sql/like.md
- reference/sql/substr.md
- reference/sql/trim.md
- Дата и время:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment