158 votes

Comment compter les occurrences de caractère dans la colonne SQL

J'ai une colonne SQL qui est une chaîne de 100 caractères «Y» ou «N». Par exemple:

YYNYNYYNNNYYNY ...

Quel est le moyen le plus simple d’obtenir le nombre total de symboles «Y» dans chaque rangée?

419voto

nickf Points 185423

Cet extrait fonctionne dans la situation spécifique dans laquelle vous avez un booléen: il répond "combien y a-t-il de non-N??".

 SELECT LEN(REPLACE(`col`, 'N', ''))
 

Si, dans une situation différente, vous essayiez réellement de compter les occurrences d'un certain caractère (par exemple, "Y") dans une chaîne donnée, utilisez ceci:

 SELECT LEN(col) - LEN(REPLACE(col, 'Y', ''))
 

111voto

David Hedlund Points 66192

si ms sql

 SELECT LEN(REPLACE(myColumn, 'N', '')) FROM ...
 

32voto

Ron Sell Points 29

Cela m'a donné des résultats précis à chaque fois ...

C'est dans mon champ de rayures ... Jaune, jaune, jaune, jaune, jaune, jaune, noir, jaune, jaune, rouge, jaune, jaune, jaune, noir

  • 11 jaunes
  • 2 noir
  • 1 rouge

    SELECT (LEN (rayures) - LEN (REPLACE (rayures, 'Rouge', '')))) / LEN ('Rouge') FROM t_Contacts WHERE ID = 12770

16voto

Aaron Dake Points 31
DECLARE @StringToFind VARCHAR(100) = "Text To Count"

SELECT (LEN([Field To Search]) - LEN(REPLACE([Field To Search],@StringToFind,'')))/LEN(@StringToFind)
FROM [Table To Search]

2voto

Jason Punyon Points 21244

Peut-être que quelque chose comme ça ...

 SELECT
    LEN(REPLACE(ColumnName, 'N', '')) as NumberOfYs
FROM
    SomeTable
 

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