Êtes-vous un débutant en TSQL à la recherche d’une solution pour compter le nombre d’occurrences de caractères dans une chaîne de caractères ? Ne cherchez plus ! Dans cet article, nous vous fournirons une méthode rapide pour compter l’occurrence de caractères dans n’importe quelle chaîne en utilisant SQL Server.
Commençons par un exemple simple :
DECLARE @LongSentence VARCHAR(MAX)
DECLARE @FindSubString VARCHAR(MAX)
SET @LongSentence = 'Ma super longue chaîne de caractères avec des mots longs'
SET @FindSubString = 'long'
SELECT (LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, ''))) AS CntReplacedChars,
(LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, ''))) / LEN(@FindSubString) AS CntOccurrenceChars
Le code ci-dessus renverra le résultat suivant :
| CntReplacedChars | CntOccurrenceChars |
|---|---|
| 2 | 2 |
Dans cet exemple, nous comptons le nombre d’occurrences du mot ‘long’ dans la chaîne ‘Ma super longue chaîne de caractères avec des mots longs’. Les colonnes CntReplacedChars et CntOccurrenceChars auront la même valeur car nous recherchons un seul mot.
Prenons un autre exemple où nous voulons compter les occurrences du caractère ‘o’ dans la même chaîne :
DECLARE @LongSentence VARCHAR(MAX)
DECLARE @FindSubString VARCHAR(MAX)
SET @LongSentence = 'Ma super longue chaîne de caractères avec des mots longs'
SET @FindSubString = 'o'
SELECT (LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, ''))) AS CntReplacedChars,
(LEN(@LongSentence) - LEN(REPLACE(@LongSentence, @FindSubString, ''))) / LEN(@FindSubString) AS CntOccurrenceChars
Le résultat sera :
| CntReplacedChars | CntOccurrenceChars |
|---|---|
| 3 | 3 |
Comme vous pouvez le voir, les colonnes CntReplacedChars et CntOccurrenceChars ont la même valeur, ce qui indique que le caractère ‘o’ apparaît trois fois dans la chaîne.
Il est important de noter que vous devez vous assurer que vos chaînes n’ont pas d’espaces vides en début ou en fin. Si c’est le cas, vous pouvez utiliser les fonctions LTRIM ou RTRIM pour les supprimer avant de procéder au comptage.
Nous espérons que cette astuce, ainsi qu’une CTE récursive, vous aidera à résoudre le défi T-SQL. Bon codage !