vocales una repetidos longitud largo especificos contar consulta caracteres caracter campo cadena buscar sql string tsql count symbols

una - Cómo contar instancias de carácter en SQL Column



largo de caracteres sql (13)

por ejemplo, para calcular las instancias de recuento de caracteres (a) en SQL Column -> name is column name '''' (y en doblequote''s is empty, soy replace a with nocharecter @ '''')

seleccione len (nombre) - len (replace (nombre, ''a'', '''')) de TESTING

select len ​​(''YYNYNYYNNNYYNY'') - len (replace (''YYNYNYYNNNYYNY'', ''y'', ''''))

Tengo una columna sql que es una cadena de 100 caracteres ''Y'' o ''N''. Por ejemplo:

YYNYNYYNNNYYNY ...

¿Cuál es la forma más fácil de contar los símbolos ''Y'' en cada fila?


Este fragmento funciona en la situación específica en la que tiene un booleano: responde "¿cuántos no-N existen?".

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

Si, en una situación diferente, estuvieras tratando de contar las ocurrencias de un cierto personaje (por ejemplo ''Y'') en una cadena dada, usa esto:

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


Esto es lo que utilicé en Oracle SQL para ver si alguien estaba pasando un número de teléfono correctamente formateado:

WHERE REPLACE(TRANSLATE(''555-555-1212'',''0123456789-'',''00000000000''),''0'','''') IS NULL AND LENGTH(REPLACE(TRANSLATE(''555-555-1212'',''0123456789'',''0000000000''),''0'','''')) = 2

La primera parte verifica si el número de teléfono tiene solo números y el guión y la segunda parte verifica que el número de teléfono tenga solo dos guiones.


Esto me dio resultados precisos cada vez ...

Esto está en mi campo Stripes ... Amarillo, Amarillo, Amarillo, Amarillo, Amarillo, Amarillo, Negro, Amarillo, Amarillo, Rojo, Amarillo, Amarillo, Amarillo, Negro

  • 11 amarillos
  • 2 negro
  • 1 rojo

SELECT (LEN(Stripes) - LEN(REPLACE(Stripes, ''Red'', ''''))) / LEN(''Red'') FROM t_Contacts


La forma más fácil es mediante el uso de la función de Oracle:

SELECT REGEXP_COUNT(COLUMN_NAME,''CONDITION'') FROM TABLE_NAME


La segunda respuesta proporcionada por nickf es muy inteligente. Sin embargo, solo funciona para una longitud de caracteres de la subcadena de destino de 1 e ignora los espacios. Específicamente, había dos espacios principales en mis datos, que SQL elimina útilmente (no lo sabía) cuando se eliminan todos los caracteres del lado derecho. Lo que significaba que

" John Smith"

generó 12 utilizando el método de Nickf, mientras que:

"Joe Bloggs, John Smith"

generado 10, y

"Joe Bloggs, John Smith, John Smith"

Generado 20.

Por lo tanto, he modificado la solución ligeramente para lo siguiente, que funciona para mí:

Select (len(replace(Sales_Reps,'' '',''''))- len(replace((replace(Sales_Reps, '' '','''')),''JohnSmith'','''')))/9 as Count_JS

¡Estoy seguro de que alguien puede pensar en una mejor manera de hacerlo!


Prueba esto. Determina el no. de ocurrencias de un solo carácter, así como las ocurrencias de subcadena en la cadena principal.

SELECT COUNT(DECODE(SUBSTR(UPPER(:main_string),rownum,LENGTH(:search_char)),UPPER(:search_char),1)) search_char_count FROM DUAL connect by rownum <= length(:main_string);


Si desea contar el número de instancias de cadenas con más de un carácter, puede usar la solución anterior con expresiones regulares, o esta solución usa STRING_SPLIT, que creo que se introdujo en SQL Server 2016. También necesitará compatibilidad nivel 130 y superior.

ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130

.

--some data DECLARE @table TABLE (col varchar(500)) INSERT INTO @table SELECT ''whaCHAR(10)teverCHAR(10)whateverCHAR(10)'' INSERT INTO @table SELECT ''whaCHAR(10)teverwhateverCHAR(10)'' INSERT INTO @table SELECT ''whaCHAR(10)teverCHAR(10)whateverCHAR(10)~'' --string to find DECLARE @string varchar(100) = ''CHAR(10)'' --select SELECT col , (SELECT COUNT(*) - 1 FROM STRING_SPLIT (REPLACE(REPLACE(col, ''~'', ''''), ''CHAR(10)'', ''~''), ''~'')) AS ''NumberOfBreaks'' FROM @table


Tal vez algo como esto ...

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


También puedes probar esto

-- DECLARE field because your table type may be text DECLARE @mmRxClaim nvarchar(MAX) -- Getting Value from table SELECT top (1) @mmRxClaim = mRxClaim FROM RxClaim WHERE rxclaimid_PK =362 -- Main String Value SELECT @mmRxClaim AS MainStringValue -- Count Multiple Character for this number of space will be number of character SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, ''GS'', '' '')) AS CountMultipleCharacter -- Count Single Character for this number of space will be one SELECT LEN(@mmRxClaim) - LEN(REPLACE(@mmRxClaim, ''G'', '''')) AS CountSingleCharacter

Salida:


prueba esto

declare @v varchar(250) = ''test.a,1 ;hheuw-20;'' -- LF ; select len(replace(@v,'';'',''11''))-len(@v)


si ms sql

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


DECLARE @StringToFind VARCHAR(100) = "Text To Count" SELECT (LEN([Field To Search]) - LEN(REPLACE([Field To Search],@StringToFind,'''')))/COALESCE(NULLIF(LEN(@StringToFind), 0), 1) --protect division from zero FROM [Table To Search]