diff --git a/docs/images/ebnf/expression.svg b/docs/images/ebnf/expression.svg index c4d798f9b37657110bc98ca1f3a683057cddd0e4..454a42487d88d9955207456ed7f34d1cccfa07bc 100644 Binary files a/docs/images/ebnf/expression.svg and b/docs/images/ebnf/expression.svg differ diff --git a/docs/images/ebnf/localtimestamp.svg b/docs/images/ebnf/localtimestamp.svg new file mode 100644 index 0000000000000000000000000000000000000000..734903cddb87730f0ab1acc8a61667581a1a8852 Binary files /dev/null and b/docs/images/ebnf/localtimestamp.svg differ diff --git a/docs/images/ebnf/substring.svg b/docs/images/ebnf/substring.svg new file mode 100644 index 0000000000000000000000000000000000000000..bb21937fe472d14864f6f9891b2dbb0514d9488d Binary files /dev/null and b/docs/images/ebnf/substring.svg differ diff --git a/docs/images/ebnf/substringFor.svg b/docs/images/ebnf/substringFor.svg new file mode 100644 index 0000000000000000000000000000000000000000..96957b892f31bd8581f40acd3079b77c5322dbb7 Binary files /dev/null and b/docs/images/ebnf/substringFor.svg differ diff --git a/docs/images/ebnf/substringFrom.svg b/docs/images/ebnf/substringFrom.svg new file mode 100644 index 0000000000000000000000000000000000000000..6099650f35818e4b0c935731d97f19609fbf4976 Binary files /dev/null and b/docs/images/ebnf/substringFrom.svg differ diff --git a/docs/images/ebnf/substringFromFor.svg b/docs/images/ebnf/substringFromFor.svg new file mode 100644 index 0000000000000000000000000000000000000000..9ad049a85cf6f4c52b5ececa1bb3e493d4431ea0 Binary files /dev/null and b/docs/images/ebnf/substringFromFor.svg differ diff --git a/docs/images/ebnf/substringRegular.svg b/docs/images/ebnf/substringRegular.svg new file mode 100644 index 0000000000000000000000000000000000000000..8a81f08b69745bb42a87c072ae208f5695e4e613 Binary files /dev/null and b/docs/images/ebnf/substringRegular.svg differ diff --git a/docs/images/ebnf/substringSimilar.svg b/docs/images/ebnf/substringSimilar.svg new file mode 100644 index 0000000000000000000000000000000000000000..c3131de6a7a6b7631670cd6590d0c9698798d6ff Binary files /dev/null and b/docs/images/ebnf/substringSimilar.svg differ diff --git a/docs/images/ebnf/substringVariant.svg b/docs/images/ebnf/substringVariant.svg new file mode 100644 index 0000000000000000000000000000000000000000..923521c30ec329db993767bffae8a96d6c00aab1 Binary files /dev/null and b/docs/images/ebnf/substringVariant.svg differ diff --git a/docs/reference/ansi_sql.md b/docs/reference/ansi_sql.md index ade59c19eeee1f55b8043b2d35a3c4630901d301..10ea2ba6318b40204e3349591a3b7e755ad0a5c4 100644 --- a/docs/reference/ansi_sql.md +++ b/docs/reference/ansi_sql.md @@ -187,8 +187,12 @@ td.td3 ul { <tr> <td class="center"><span class="partly">E021-06</span></td> <td>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ SUBSTRING</td> - <td class="td3 center">[SUBSTR](sql/substr.md)</td> - <td>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ SUBSTRING не поддерживаетÑÑ, но еÑÑ‚ÑŒ SUBSTR</td> + <td class="td3 center"></td> + <td class="td3 center"><ul> + <li>[SUBSTR](sql/substr.md)</li> + <li>[SUBSTRING](sql/substring.md)</li> + </ul></td> + <td></td> </tr> <tr> <td class="center"><span class="full">E021-07</span></td> @@ -845,9 +849,9 @@ td.td3 ul { <td></td> </tr> <tr> - <td class="center"><span class="absent">F051-08</span></td> + <td class="center"><span class="full">F051-08</span></td> <td>LOCALTIMESTAMP</td> - <td class="td3 center"></td> + <td class="td3 center">[LOCALTIMESTAMP](sql/localtimestamp.md)</td> <td></td> </tr> <!-- F081 UNION and EXCEPT in views --> diff --git a/docs/reference/sql/localtimestamp.md b/docs/reference/sql/localtimestamp.md new file mode 100644 index 0000000000000000000000000000000000000000..dacec53841687e9543280cb4414402e007d9a061 --- /dev/null +++ b/docs/reference/sql/localtimestamp.md @@ -0,0 +1,44 @@ +# LOCALTIMESTAMP + +Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ `LOCALTIMESTAMP` возвращает текущую дату и Ð²Ñ€ÐµÐ¼Ñ Ð² чаÑовом поÑÑе +из текущей ÑеÑÑии SQL. Ðто возвратит значение `TIMESTAMP`. + +Ð’ качеÑтве аргумента Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ можно указать целое чиÑло от `0` до `6`, +определÑющее точноÑÑ‚ÑŒ времени. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹ÑˆÐµ `6` игнорируютÑÑ. + +## СинтакÑÐ¸Ñ {: #syntax } + + + +## Примеры {: #examples } + +```sql title="Получение текущей даты и времени" +sql> SELECT localtimestamp; ++-----------------------------+ +| col_1 | ++=============================+ +| 2025-02-21T17:47:21.236402Z | ++-----------------------------+ +(1 rows) +``` + +```sql title="Получение текущей даты и времени Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð½Ð¾Ð¹ точноÑтью" + +sql> select localtimestamp(3); ++--------------------------+ +| col_1 | ++==========================+ +| 2025-02-21T17:48:09.981Z | ++--------------------------+ +(1 rows) +``` + +```sql title="Получение текущей даты и времени Ñ Ð¼Ð°ÐºÑимальной точноÑтью" +sql> SELECT localtimestamp(6); ++-----------------------------+ +| col_1 | ++=============================+ +| 2025-02-21T17:51:18.664697Z | ++-----------------------------+ +(1 rows) +``` diff --git a/docs/reference/sql/substr.md b/docs/reference/sql/substr.md index 13e70adc0bec94dbbb90fba62ebb1e7972f8db42..21304e4d73fde8d3c2de62cf75ec55394b658788 100644 --- a/docs/reference/sql/substr.md +++ b/docs/reference/sql/substr.md @@ -28,7 +28,7 @@ ## Примеры {: #examples } -```title="Ð—Ð°Ð¿Ñ€Ð¾Ñ VALUES Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ SUBSTR и параметром <i>from</i>" +```sql title="Ð—Ð°Ð¿Ñ€Ð¾Ñ VALUES Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ SUBSTR и параметром <i>from</i>" sql> VALUES ( SUBSTR('picodata', 3) ); +----------+ | COLUMN_1 | @@ -36,10 +36,9 @@ sql> VALUES ( SUBSTR('picodata', 3) ); | "codata" | +----------+ (1 rows) - ``` -```title="Ð—Ð°Ð¿Ñ€Ð¾Ñ VALUES Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ SUBSTR и параметрами <i>from</i> и <i>count</i>" +```sql title="Ð—Ð°Ð¿Ñ€Ð¾Ñ VALUES Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸ÐµÐ¹ SUBSTR и параметрами <i>from</i> и <i>count</i>" sql> VALUES ( SUBSTR('picodata', 3, 4) ); +----------+ | COLUMN_1 | diff --git a/docs/reference/sql/substring.md b/docs/reference/sql/substring.md new file mode 100644 index 0000000000000000000000000000000000000000..99697b963aa8e95d0c898d7d56f4a37e50e66c1a --- /dev/null +++ b/docs/reference/sql/substring.md @@ -0,0 +1,112 @@ +# SUBSTRING {: #substring } + +Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ `SUBSTRING` извлекает подÑтроку из Ñтроки *string* подобно тому, +как Ñто делает Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ [SUBSTR](substr.md), однако предоÑтавлÑет +дополнительные возможноÑти поиÑка Ñимволов. + +## СинтакÑÐ¸Ñ {: #syntax } + +### ОÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ {: #main_function } + + + +### Варианты поиÑка подÑтроки {: #substringVariant } + + + +ДоÑтупны неÑколько вариантов поиÑка подÑтроки: + +- `For` — иÑкать Ñлева направо _по_ указанный номера Ñимвола +- `From` — иÑкать Ñлева направо _Ñ_ указанного номера Ñимвола, а также + извлечь первую подÑтроку, ÑоответÑтвующую регулÑрному выражению в + Ñтиле POSIX +- `FromFor` — Ñочетание обоих вариантов выше, указание полных границ поиÑка +- `Regular` — традиционный поиÑк по номерам Ñимволов, как в [SUBSTR](substr.md) +- `Similar` — поиÑк по ÑхожеÑти c иÑпользованием регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¸ + ÑÐºÑ€Ð°Ð½Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñпециальных Ñимволов в нем + +Отличие варианта `FromFor` от `Regular` также ÑоÑтоит в том, что поиÑк +может проиÑходить не только по позициÑм Ñимволом (их номерах), но и по +вхождению подÑтроки Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ регулÑрных выражений, Ñм. [примеры](#examples). + +#### substringFor {: #substringFor } + + + +#### substringFrom {: #substringFrom } + + + +#### substringFromFor {: #substringFromFor } + + + +#### substringRegular {: #substringRegular } + + + +#### substringSimilar {: #substringSimilar } + + + +### Выражение {: #expression } + +??? note "Диаграмма" +  + +### Литерал {: #literal } + +??? note "Диаграмма" +  + +## Примеры {: #examples } + +```sql title="Указание только начального отÑтупа" +sql> SELECT SUBSTRING('(select 1)', 3); ++----------+ +| col_1 | ++==========+ +| elect 1) | ++----------+ +(1 rows) +``` + +```sql title="Указание обеих границ" +sql> SELECT SUBSTRING('1234567890' FROM 4 FOR 3); ++-------+ +| col_1 | ++=======+ +| 456 | ++-------+ +(1 rows) +``` + +```sql title="ПоиÑк первой подÑтроки, удовлетворÑющей регулÑрному выражению в Ñтиле SQL" +sql> SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#'); ++-------+ +| col_1 | ++=======+ +| bcd | ++-------+ +(1 rows) +``` + +```sql title="ПоиÑк первой подÑтроки, удовлетворÑющей регулÑрному выражению в Ñтиле POSIX" +sql> SELECT substring('Thomas' FROM '...$') ; ++-------+ +| col_1 | ++=======+ +| mas | ++-------+ +(1 rows) +``` + +```sql title="ПоиÑк первой подÑтроки, удовлетворÑющей регулÑрному выражению в Ñтиле SQL" +sql> SELECT SUBSTRING('abcdefg' SIMILAR 'a#"%#"x|g' ESCAPE '#'); ++-------+ +| col_1 | ++=======+ +| bcdef | ++-------+ +(1 rows) +``` diff --git a/docs/sql_index.md b/docs/sql_index.md index b2ede7a627d0a1591068e90209dc0e304bf41a0e..d7463b9fc80748700482072141c046951270d655 100644 --- a/docs/sql_index.md +++ b/docs/sql_index.md @@ -115,6 +115,7 @@ article.md-typeset.md-typeset ul { * [LIMIT](reference/sql/select.md#params) * [LIMIT ALL](reference/sql/select.md#params) * [LIMIT NULL](reference/sql/select.md#params) +* [LOCALTIMESTAMP](reference/sql/localtimestamp.md) * [LOWER](reference/sql/lower.md) <b>M</b> @@ -146,6 +147,7 @@ article.md-typeset.md-typeset ul { * [sharding key](overview/glossary.md#sharding_key) * [stored procedure](overview/glossary.md#stored_procedure) * [SUBSTR](reference/sql/substr.md) +* [SUBSTRING](reference/sql/substring.md) * [SUM](reference/sql/aggregate.md#functions) <b>T</b> diff --git a/mkdocs.yml b/mkdocs.yml index 6c7e74d0be8dfd90299a3e67bde65f8d61786708..b128da93490a9548a1210eba66fdf8b7903330a0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -113,10 +113,12 @@ nav: - reference/sql/like.md - reference/sql/lower.md - reference/sql/substr.md + - reference/sql/substring.md - reference/sql/trim.md - reference/sql/upper.md - Дата и времÑ: - reference/sql/current_date.md + - reference/sql/localtimestamp.md - reference/sql/to_char.md - reference/sql/to_date.md - reference/cli.md