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]