Sí, el valor retorno de la función "conteo" sí es siempre un número entero no nulo, sin excepción.
Una vez dicho esto, puede estar más interesado en el valor de retorno de la consulta , que es en realidad un resultado ajustado . Si ese es el caso, entonces simplemente debe considerar si su consulta incluye una cláusula "agrupar por".
A consulta no agrupados con funciones de agregado como
select count(*), sum(*), max(*), min(*) from table
produce un conjunto de resultados con un único registro de que contiene el valor (s) de retorno de la función (s) agregada. En este caso, su conjunto de resultados siempre tendrá exactamente un registro, con columnas que contienen los valores de retorno de las funciones agregadas que haya incluido. Dentro de este disco en solitario, el valor de retorno de recuento será siempre un número entero no nulo, mientras que los valores de retorno de las otras funciones de agregado, como mínimo, máximo, y la suma puede ser nulo. En el ejemplo anterior, el registro devuelto puede ser "cero, null, null, null", pero nunca será "null, null, null, null", ya que la cuenta nunca se devuelve un valor nulo. Así que si usted está llamando única "recuento", luego de que una columna en que un registro devuelto siempre contendrá el valor de retorno no nulo de recuento; por lo tanto, puede estar seguro de que el valor de retorno escalar de su consulta de recuento siempre será un entero no nulo.
Por otro lado, una consulta agrupados con funciones de agregado como
select count(*), sum(*), max(*), min(*) from table group by column
produce un conjunto de resultados con cero o más registros de, donde cada registro contiene el valor de retorno de la función de agregado (s) para cada grupo identificado. En este caso, si no hay grupos identificados, no hay grupos para ejecutar las funciones agregadas, las funciones nunca se ejecutan y el "valor de retorno de la consulta" será un conjunto vacío sin registros.
probarlo en una tabla sin registros para ver los resultados:
create table #t (c int);
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t; --returns one record {0, null, null, null}
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t group by c; --returns no records
drop table #t;
no tan si usted está llamando recuento, mínimo, máximo, o suma, es importante entender únicamente los valores de retorno de funciones de agregado individuales, sino también el "valor de retorno" de la consulta en sí, y lo que contiene ese conjunto de resultados.
¿Es demasiado difícil de probar? –
@col yea :) ',' –
@col al no intentarlo y solo seguirlo aquí, supongo que quiere que los espectadores hagan clic en "Volar a la deriva" para sus preguntas. – raj