45 votes

Comment compter le nombre de fois qu'un caractère apparaît dans une colonne SQL?

Pour une connexion de l'utilisateur table, j'ai dans une base de données SQL, j'ai suivi quelques-uns des paramètres hors d'une demande de rapport. Le rapport permet à plusieurs ID est passée à elle et je stocker tous ceux qui sont dans une seule colonne dans la colonne de base de données. Si c'était un normalisée de l'ensemble de données, il y aurait certainement une table supplémentaire d'installation pour cela, mais c'est ce qui a été hérité...

J'ai été invité à donner un rapide comptage du nombre de fois qu'un rapport a été exécuté avec plus de 2 ID du passé. Je peux facilement obtenir le nombre d'enregistrements qui ont plus de 1 rapport demandé parce qu'ils comprennent tous une virgule.

Ce dont j'ai besoin pour faire est de compter le nombre de fois qu'une virgule apparaît dans une colonne. Comment faites-vous cela en SQL?

--count the number of times more than 1 report was requested in the record
select 
    count(*) as cnt
from
    [table]
where
    RequestedReportParams Like '%,%'

114voto

AdaTheDev Points 53358
 SELECT LEN(RequestedReportParams) - LEN(REPLACE(RequestedReportParams, ',', ''))
FROM YourTable
WHERE .....
 

Il s'agit simplement de comparer la longueur de la colonne avec les virgules, avec la longueur de la valeur avec les virgules supprimées, pour vous donner la différence (c'est-à-dire le nombre de virgules)

8voto

mherren Points 571

Il semble que le moyen rapide et sale de répondre à la question qui vous a été posée serait de le faire:

 select 
    count(*) as cnt
FROM 
    [table]
WHERE 
    RequestedReportParams Like '%,%,%'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X