# Mid スクリプトおよびチャート関数

Mid() は、2 番目の引数「start」で定義された文字の位置で始まり、3 番目の引数「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)`、`StartPosition` 項目の開始値から、`InputText` から抽出する文字を計算します。`Count` パラメーターが指定されていないため、この関数は `StartPosition` の値から `InputString` の末尾までのすべての文字を返します。

* `=mid(InputText,StartPosition,CharacterCount)`、`StartPosition` 項目の開始値から、`InputText` から抽出する文字を計算します。`CharacterCount` の値は、`StartPosition` 項目の値を開始値として、返される文字数を決定します。

結果テーブル

| InputText | StartPosition | CharacterCount | Mid(InputText,StartPosition) | Mid(InputText,StartPosition,CharacterCount |
| --- | --- | --- | --- | --- |
| abcdef | 2 | 3 | bcdef | bcd |
| abcdef | 3 | 2 | cdef | cd |
| 20210714 | 2 | 3 | 10714 | 107 |
| 20210714 | 3 | 2 | 0714 | 07 |

最初の行は、最初の式の値 `bcdef` を返します。`Count` 引数が設定されていないため、式は位置 2 から始まり、すべての文字を返します。`Count` 引数が 2 であるため、2 番目の式も位置 2 から始まりますが、文字 `bcd` のみを返します。

2 番目の行は、最初の式の値 `cdef` を返します。`Count` 引数が設定されていないため、式は位置 3 から始まり、すべての文字を返します。`Count` 引数が 2 であるため、2 番目の式も位置 3 から始まりますが、文字 `cd` のみを返します。

3 番目の行は、最初の式の値 `10714` を返します。`Count` 引数が設定されていないため、式は位置 2 から始まり、すべての文字を返します。`Count` 引数が 3 であるため、2 番目の式も位置 2 から始まりますが、文字 `107` のみを返します。

4 番目の行は、最初の式の値 `0714` を返します。`Count` 引数が設定されていないため、式は位置 3 から始まり、すべての文字を返します。`Count` 引数が 2 であるため、2 番目の式も位置 2 から始まりますが、文字 `07` のみを返します。

[](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
];
```

結果テーブル

| テキスト | StartPosition | Mid1 | 個数 | Mid2 |
| --- | --- | --- | --- | --- |
| abcdef | 3 | cdef | 2 | cd |
| abcdef | 2 | bcdef | 3 | bcd |
| 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`」というデータ テーブルにロードされるデータセット。

* データ テーブル内の 1 つの項目は `OrderID` と呼ばれます。

ロード スクリプト

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

結果

データをロードしてシートを開きます。新しいテーブルを作成し、この項目を軸として追加します:

* ` OrderID
                                   `

次の計算軸を作成します。

* `=Mid(OrderID, 9, 2)` で `OrderID` から 2 文字の国コードを抽出します。

結果テーブル

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

`Mid` 関数の出力は、`OrderID` の文字列値から 2 文字の国コードを抽出することに成功しました。

## 詳細を見る

* [Index スクリプトおよびチャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/StringFunctions/Index.htm)