# Mid Функция скрипта и диаграммы

Mid() возвращает часть входной строки, начинающуюся с символа, определенного вторым аргументом «start», и возвращает количество символов, определенных третьим аргументом «count». Если «count» отсутствует, возвращается остальная часть входной строки. Первый символ во входной строке имеет номер 1.

Синтаксис:

Mid(text, start[, count])

Возвращаемые типы данных: строка

Аргументы

| Аргумент | Описание |
| --- | --- |
| text | Оригинальная строка. |
| start | Целое число, определяющее положение первого символа в text для добавления. |
| count | Определяет длину выводимой строки. Если не указано, добавляются все символы с позиции, определенные функцией start. |

Пример: выражения диаграммы

| Пример | Результат |
| --- | --- |
| `Mid( 'abcdef',3 )` | Возвращает `cdef` |
| `Mid( 'abcdef',3, 2 )` | Возвращает `cd` |

## Пример. Основы использования функции Mid

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Mid.htm)

#### Выражение диаграммы

Обзор

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Example`.

* Следующие поля в таблице данных:

  * `InputText`, исходная текстовая строка

  * `StartPosition`, начальная позиция первого символа исходной текстовой строки, который нужно включить после обработки

  * `CharacterCount`, количество символов, которое нужно вернуть (необязательный параметр)

Скрипт загрузки

```
Example:
Load * inline [
InputText, StartPosition, CharacterCount
abcdef, 3, 2
abcdef, 2, 3
210714, 3, 2
210714, 2, 3
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

* ` InputText
                                   `

* `StartPosition`

* `CharacterCount`

Создайте следующие вычисляемые измерения:

* `=mid(InputText,StartPosition)`, чтобы вычислить символы, которые нужно извлечь из `InputText`, начиная со значения в поле `StartPosition`. Функция будет возвращать все символы от значения `StartPosition` до конца `InputString`, поскольку параметр `Count` не указан.

* `=mid(InputText,StartPosition,CharacterCount)`, чтобы вычислить символы, которые нужно извлечь из `InputText`, начиная со значения в поле `StartPosition`. Значение в поле `CharacterCount` определяет количество возвращаемых символов, начиная со значения в поле `StartPosition`.

Результирующая таблица

| ВходнойТекст | НачальнаяПозиция | КоличествоСимволов | Mid(ВходнойТекст,НачальнаяПозиция) | Mid(ВходнойТекст,НачальнаяПозиция,КоличествоСимволов |
| --- | --- | --- | --- | --- |
| абвгдеф | 2 | 3 | бцдеф | бцд |
| абвгдеф | 3 | 2 | cdef | cd |
| 20210714 | 2 | 3 | 10714 | 107 |
| 20210714 | 3 | 2 | 0714 | 07 |

Первая строка возвращает значение `bcdef` для первого выражения. Выражение начинается с позиции 2 и возвращает все символы, потому что аргумент `Count` не задан. Второе выражение также начинается с позиции 2 и возвращает только символы `bcd`, потому что аргументу `Count` задано значение 2.

Первая строка возвращает значение `cdef` для первого выражения. Выражение начинается с позиции 3 и возвращает все символы, потому что аргумент `Count` не задан. Второе выражение также начинается с позиции 3 и возвращает только символы `cd`, потому что аргументу `Count` задано значение 2.

Третья строка возвращает значение `10714` для первого выражения. Выражение начинается с позиции 2 и возвращает все символы, потому что аргумент `Count` не задан. Второе выражение также начинается с позиции 2 и возвращает только символы `107`, потому что аргументу `Count` задано значение 3.

Четвертая строка возвращает значение `0714` для первого выражения. Выражение начинается с позиции 3 и возвращает все символы, потому что аргумент `Count` не задан. Второе выражение также начинается с позиции 2 и возвращает только символы `07`, потому что аргументу `Count` задано значение 2.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Mid.htm)

#### Скрипт загрузки

Следующий код показывает, как использовать эту функцию в скрипте загрузки.

```
Example:
Load *,
mid(Text,StartPosition) as Mid1,
mid(Text,StartPosition,Count) as Mid2;
Load * inline [
Text, StartPosition, Count
'abcdef', 3, 2
'abcdef', 2, 3
'210714', 3, 2
'210714', 2, 3
];
```

Результирующая таблица

| Текст | Начальная позиция | Мид1 | Количество | Мид2 |
| --- | --- | --- | --- | --- |
| абвгдеф | 3 | cdef | 2 | cd |
| абвгдеф | 2 | бцдеф | 3 | бцд |
| 210714 | 3 | 0714 | 2 | 07 |
| 210714 | 2 | 10714 | 3 | 107 |

## Пример. Сценарий использования функции Mid

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Mid.htm)

#### Выражение диаграммы

Обзор

Источник данных содержит столбец под названием `OrderID`, который использует следующий структурированный формат: `ORDYYYY-COUNTRYCODE-ORDERNUMBER`. Чтобы удовлетворить требования к отчетности, необходимо извлечь и представить код страны в виде отдельного столбца.

Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел.

Скрипт загрузки содержит следующее:

* Набор данных, который загружается в таблицу данных под именем `Orders`.

* Одно поле в таблице данных называется `OrderID`.

Скрипт загрузки

```
Orders:
Load * inline [
OrderID
ORD2024-US-123456
ORD2024-UK-654321
ORD2024-CA-789123
];
```

Результаты

Загрузите данные и откройте лист. Создайте новую таблицу и добавьте это поле как измерение:

* ` OrderID
                                   `

Создайте следующее вычисляемое измерение:

* `=Mid(OrderID, 9, 2)`, чтобы извлечь двухбуквенный код страны из `OrderID`.

Результирующая таблица

| OrderID | Mid(OrderID, 9, 2) |
| --- | --- |
| ORD2024-CA-789123 | CA |
| ORD2024-UK-654321 | UK |
| ORD2024-US-123456 | US |

Вывод функции `Mid` успешно извлекает двухбуквенные коды стран из строковых значений `OrderID`.

## Подробнее

* [Index Функция скрипта и диаграммы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)