# SubStringCount – Skript- och diagramfunktion

SubstringCount() returnerar antalet förekomster av angiven delsträng i indatasträngtexten. Om det inte blir någon träff returneras 0.

Syntax:

SubStringCount(text, sub\_string)

Returnerad datatyp: heltal

Argument

| Argument | Beskrivning |
| --- | --- |
| text | Den ursprungliga strängen. |
| sub\_string | En sträng som kan förekomma en eller flera gånger inom indatasträngen text. |

Exempel: diagramuttryck

| Exempel | Resultat |
| --- | --- |
| `SubStringCount( 'abcdefgcdxyz', 'cd' )` | Returnerar `2` |
| `SubStringCount( 'abcdefgcdxyz', 'dc' )` | Returnerar `0` |

## Exempel – grunderna SubStringCount

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

#### Diagramuttryck

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Ett fält i datatabellen heter `FruitSentence`.

Laddningsskript

```
Example:
Load * inline [
FruitSentence
"I love eating an apple every day.Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* ` FruitSentence
                                   `

Skapa följande beräknade dimension:

* `=SubStringCount(FruitSentence, 'apple')` för att beräkna hur många gånger ordet `apple` förekommer i `FruitSentence`.

Results table

| FruitSentence | SubStringCount(FruitSentence, 'apple') |
| --- | --- |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 1 |
| I don't like apples as much as oranges. | 1 |
| I love eating an apple every day. Apple juice is great too! | 1 |
| There is an apple and a banana on the table. | 1 |

Tabellen är sorterad på dimensionen `FruitSentence` i stigande ordning. Funktionen `SubStringCount` returnerar antalet gånger som ordet `apple` förekommer i varje mening. I den första meningen returneras t.ex. `2`, eftersom ordet förekommer två gånger i meningen. I den andra och fjärde meningen ignorerar funktionen ordet `Apple` eftersom det inte matchar skiftläget för söktermen `apple`.

Anteckning om tipsOm du vill göra en skiftlägesokänslig sökning kan du först konvertera indatasträngen till versaler eller gemener och sedan använda funktionen `SubStringCount` på resultatet. Om du till exempel vill söka efter alla förekomster av ordet apple, oavsett skiftläge, använder du följande måttuttryck: `=SubStringCount(Upper(FruitSentence),'APPLE')`. Uttrycket använder funktionen `SubStringCount` med funktionen `Upper` för att konvertera hela strängen till versaler, och söker sedan efter ordet `APPLE`.

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

#### Laddningsskript

Följande kod visar hur du använder funktionen i ett laddningsskript. Detta exempel innehåller en föregående laddning som använder funktionen `SubStringCount` med funktionen `Upper` för att konvertera hela strängen till versaler, och sedan söker efter ordet `APPLE`.

```
Example:
Load *,
SubStringCount(Upper(FruitSentence),'APPLE') as SubStringCount_APPLE;
Load * inline [
FruitSentence
"I love eating an apple every day. Apple juice is great too!"
"Apple pie is my favorite dessert. I also enjoy apple jam."
"There is an apple and a banana on the table."
"I don't like apples as much as oranges."
"An apple a day keeps the doctor away, but two apples are even better!"
];
```

Resultattabell

| FruitSentence | SubStringCount\_APPLE |
| --- | --- |
| I love eating an apple every day. Apple juice is great too! | 2 |
| Apple pie is my favorite dessert. I also enjoy apple jam. | 2 |
| There is an apple and a banana on the table. | 1 |
| I don't like apples as much as oranges. | 1 |
| An apple a day keeps the doctor away, but two apples are even better! | 2 |

## Exempel – SubStringCount-scenario

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

#### Diagramuttryck

Översikt

En datamängd med fruktprodukter innehåller ett fält med produktbeskrivningar. Detta exempel beräknar antalet gånger som följande fruktnamn förekommer i varje beskrivning: äpple, banan eller apelsin.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter `Example`.

* Ett fält i datatabellen heter `ProductDescription`.

Laddningsskript

```
Example:
Load * inline [
ProductDescription
"Fresh apple and banana smoothie."
"Organic apple, banana, and orange juice. Great for breakfast."
"A refreshing orange soda made with real orange juice."
"Banana chips with apple and cinnamon flavor."
"Delicious apple pie with a hint of cinnamon and vanilla."
"Tropical banana and orange mix for smoothies."
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

* `ProductDescription`

Skapa följande beräknade dimensioner:

* `=SubStringCount(ProductDescription, 'apple')` för att beräkna antalet förekomster av ordet `apple` i strängen `ProductDescription`.

* `=SubStringCount(ProductDescription, 'banana')` för att beräkna antalet förekomster av ordet `banana` i strängen `ProductDescription`.

* `=SubStringCount(ProductDescription, 'orange')` för att beräkna antalet förekomster av ordet `orange` i strängen `ProductDescription`.

Results table

| ProductDescription | SubStringCount(ProductDescription, 'apple') | SubStringCount(ProductDescription, 'banana') | SubStringCount(ProductDescription, 'orange') |
| --- | --- | --- | --- |
| A refreshing orange soda made with real orange juice. | 0 | 0 | 2 |
| Banana chips with apple and cinnamon flavor. | 1 | 0 | 0 |
| Delicious apple pie with a hint of cinnamon and vanilla. | 1 | 0 | 0 |
| Fresh apple and banana smoothie. | 1 | 1 | 0 |
| Organic apple, banana, and orange juice. Great for breakfast. | 1 | 1 | 1 |
| Tropical banana and orange mix for smoothies. | 0 | 1 | 1 |

Utdata från funktionen `SubStringCount` returnerar framgångsrikt antalet gånger som varje delsträng (`apple, banana, orange`) förekommer i produktbeskrivningen. I den första beskrivningen till exempel, returnerar funktionen 2 eftersom det finns två förekomster av ordet `orange`. Argumentet `sub_string` är skiftlägeskänsligt, så i den andra beskrivningen räknar funktionen inte ordet `Banana` eftersom det inte matchar delsträngen `banana` i mätuttrycket.

Anteckning om tipsOm du vill göra en skiftlägesokänslig sökning kan du först konvertera indatasträngen till versaler eller gemener och sedan använda funktionen `SubStringCount` på resultatet. Om du till exempel vill söka efter alla förekomster av ordet apple, oavsett skiftläge, använder du följande måttuttryck: `=SubStringCount(Upper(ProductDescription),'APPLE')`. Uttrycket använder funktionen `SubStringCount` med funktionen `Upper` för att konvertera hela strängen till versaler, och söker sedan efter ordet `APPLE`.

## Exempel – SubStringCount-scenario parsning av nästlade data

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

#### Diagramuttryck

Översikt

En datauppsättning med it-poster innehåller en lista med id-nummer och kategorier för ändringar. I datatabellen härleds fältet Categories från en hierarki på flera nivåer som listar den översta överordnade kategorin följt av alla underkategorier, till exempel Software &gt; Program &gt; Patch. Det här scenariot visar hur man plockar ut det sista värdet, eller bladvärdet, från den här ojämna kategorihierarkin med hjälp av en kombination av funktionerna SubStringCount och SubField.

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som läses in i en datatabell som heter Example.

* Följande fält i datatabellen:

  * ChangeID innehåller det ursprungliga ändrings-ID som ska behandlas.

  * Categories innehåller en lista över ändringskategorier. Kategorierna skiljs åt med semikolon och listas i hierarkisk ordning från vänster till höger, från den översta överordnade kategorin till den mest detaljerade underkategorin.

Laddningsskript

```
Example:
Load * inline [
ChangeID,Categories
CHG00100,Software;Program;Patch
CHG00101,Hardware;Server
CHG00102,Hardware;Network;Router
];
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* ChangeID

* Categories

Skapa följande beräknade dimensioner:

* =SubStringCount(Categories,';')+1för att beräkna antalet kategorinivåer i förändringshierarkin.

* =SubField(Categories, ';' ,SubStringCount(Categories,';')+1) för att extrahera kategorin längst till höger i förändringshierarkin.

Results table

| ChangeID | Categories | ​SubStringCount(Categories,';')+1 | SubField(Categories, ';' ,SubStringCount(Categories,';')+1) |
| --- | --- | --- | --- |
| CHG00100 | Software;Program;Patch | 3 | Patch |
| CHG00101 | Hardware;Server | 2 | Server |
| CHG00102 | Hardware;Network;Router | 3 | Router |

I det här exemplet nästlas SubStringCount-funktionen inuti SubField-funktionen. Den första beräknade dimensionen, SubStringCount(), beräknar antalet nästlade värden i fältet Categories. Detta bestäms genom att räkna antalet semikolon ';' och lägga till 1 till resultatet. Denna utdata infogas sedan som den tredje parametern i funktionen SubField för att extrahera kategorin längst till höger i Categories-fältet.

Granska till exempel resultaten för ChangeID-posten CHG00100. I den första beräknade dimensionen är SubStringCount 2. Uttrycket lägger sedan till 1 till det resultatet för att fastställa att fältet Categories har tre nästlade kategorivärden, Software, Program och Patch. Funktionen SubField i den andra beräknade dimensionen, använder sedan detta resultat för att extrahera den tredje kategorin, Patch.