2008-11-13 28 views
21

¿Cómo se puede encontrar el número de apariciones de un personaje en particular en una cadena usando sql?¿Cómo se puede encontrar el número de ocurrencias de un personaje en particular en una cadena usando sql?

Ejemplo: Quiero encontrar el número de veces que aparece la letra 'd' en esta cadena.

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

¿Qué base de datos? MySQL tal vez? –

+0

Por favor, déle un título más descriptivo, verá mejores resultados. – Jeff

+0

Probablemente la respuesta sea específica de la base de datos, así que dígales a todos qué base de datos está utilizando. –

Respuesta

49

Aquí van:

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

Lindo, estaba pensando en iterar con charindex, me gusta mucho mejor. – vfilby

+0

Estoy de acuerdo con vfilby y puedo confirmar que este código funciona en SQL Server 2005 y 2008. – xsl

+0

Estoy de acuerdo también ... mucho por su ayuda ... funcionó ... gracias una vez más ... –

12

Si desea que sea un poco más general, se debe dividir por la longitud de la cosa que usted está buscando. De esta manera:

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

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

Esto se debe a que cada vez que encuentre 'Rob', eliminará tres caracteres. Entonces, cuando eliminas seis caracteres, has encontrado a 'Rob' dos veces.

+0

Estas cifras usted está consultando una tabla llamada 'someTable' que tiene una columna llamada' original_string'. Y el principio funcionará en cualquier base de datos, solo necesita encontrar las funciones equivalentes. –

Cuestiones relacionadas