2008-11-13 6 views
21

Comment pouvez-vous trouver le nombre d'occurrences d'un caractère particulier dans une chaîne en utilisant sql? Exemple: Je veux trouver le nombre de fois que la lettre 'd' apparaît dans cette chaîne.Comment pouvez-vous trouver le nombre d'occurrences d'un caractère particulier dans une chaîne en utilisant sql?

declare @string varchar(100) 
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa' 
+0

Quelle base de données? MySQL peut-être? –

+0

S'il vous plaît donner à ce titre un titre plus descriptif, vous verrez de meilleurs résultats. – Jeff

+0

La réponse va probablement être spécifique à la base de données, donc s'il vous plaît dites à tout le monde quelle base de données vous utilisez. –

Répondre

49

vous allez ici:

declare @string varchar(100) 
select @string = 'sfdasadhfasjfdlsajflsadsadsdadsa' 
SELECT LEN(@string) - LEN(REPLACE(@string, 'd', '')) AS D_Count 
+0

Mignonne, je pensais itéter avec charindex, j'aime beaucoup mieux. – vfilby

+0

Je suis d'accord avec vfilby et je peux confirmer que ce code fonctionne dans SQL Server 2005 et 2008. – xsl

+0

Je suis d'accord aussi ... merci beaucoup pour votre aide .. ça a marché ... encore une fois ... merci –

12

Si vous voulez faire un peu plus générale, vous devez diviser par la longueur de la chose que vous recherchez. Comme ceci:

declare @searchstring varchar(10); 
set @searchstring = 'Rob'; 

select original_string, 
(len(orginal_string) - len(replace(original_string, @searchstring, '')) 
/len(@searchstring) 
from someTable; 

En effet, chaque fois que vous trouvez « Rob », vous supprimez trois caractères. Ainsi, lorsque vous supprimez six caractères, vous avez trouvé Rob deux fois.

+0

Cela signifie que vous interrogez une table appelée 'someTable' qui a une colonne appelée' original_string'. Et le principe fonctionnera dans n'importe quelle base de données, vous avez juste besoin de trouver les fonctions équivalentes. –

Questions connexes