Quiero contar la cantidad de filas donde una determinada columna tiene una subcadena en el valor de la columna.
esto no funciona
select count(column_name like '%substring%') from table_nameEjemplo: quiero contar las filas que incluyen 'no'
column_name ----------- noa noit yotResultado esperado: 2
Porque 'no' es una subcadena en 'noa' y 'noit'.
Utilice una expresión de case :
select sum(case when column_name like '%substring%' then 1 else 0 end) from table_name ; O, si ese es el único valor que desea, use el filtrado y count(*) :
select count(*) from table_name where column_name like '%substring%';El primero es más adecuado cuando tiene columnas adicionales en la consulta.
Debo señalar que el estándar SQL tiene otro método para lograr esto, usando el filter :
select count(*) filter (where column_name like '%substring%') from table_name ;Sin embargo, la mayoría de las bases de datos no admiten esta sintaxis.