validar vacío vacios vacio reemplazar por not mostrar ejemplos ejemplo campos campo sql sql-server database

vacios - vacío en sql



Verificación simple para el resultado vacío de la consulta SELECCIONAR (10)

En mi función de información de uso sql

select FOUND_ROWS();

devolverá el no. de filas devueltas por la consulta de selección.

¿Alguien puede señalar cómo verificar si una consulta de selección devuelve un conjunto de resultados no vacío?

Por ejemplo, tengo la siguiente consulta:

SELECT * FROM service s WHERE s.service_id = ?;

¿Debo hacer algo como el siguiente?

ISNULL(SELECT * FROM service s WHERE s.service_id = ?)

para probar si el conjunto de resultados no está vacío?


Estoy de acuerdo con Ed B. Debes usar el método EXISTS, pero una forma más eficiente de hacerlo es:

IF EXISTS(SELECT 1 FROM service s WHERE s.service_id = ?) BEGIN --DO STUFF HERE END

HTH


Para resumir las siguientes publicaciones un poco:

Si todo lo que le interesa es si al menos una fila coincidente está en la base de datos, entonces exists uso exists ya que es la forma más eficiente de verificar esto: se devolverá verdadero tan pronto como encuentre al menos una fila coincidente mientras que el count , etc. todas las filas coincidentes.

Si realmente necesita utilizar los datos para el procesamiento o si la consulta tiene efectos secundarios, o si necesita saber el número total real de filas, entonces la comprobación de ROWCOUNT o count es probablemente la mejor forma de ROWCOUNT .


Puedes hacerlo de varias maneras.

IF EXISTS(select * from ....) begin -- select * from .... end else -- do something

O puede usar IF NOT EXISTS , @@ROW_COUNT like

select * from .... IF(@@ROW_COUNT>0) begin -- do something end


Use @@ ROWCOUNT:

SELECT * FROM service s WHERE s.service_id = ?; IF @@ROWCOUNT > 0 -- do stuff here.....

De acuerdo con los Libros en pantalla de SQL Server :

Devuelve el número de filas afectadas por la última declaración. Si el número de filas es más de 2 mil millones, use ROWCOUNT_BIG.


tratar:

SELECT * FROM service s WHERE s.service_id = ?; IF @@ROWCOUNT=0 BEGIN PRINT ''no rows!'' END


IF EXISTS(SELECT * FROM service s WHERE s.service_id = ?) BEGIN --DO STUFF HERE END


SELECT * FROM service s WHERE s.service_id = ?; IF @@rowcount = 0 begin select ''no data'' end


SELECT COUNT(1) FROM service s WHERE s.service_id = ?


SELECT count(*) as count FROM service s WHERE s.service_id = ?;

prueba si count == 0.

Más barroco:

seleccionar caso cuando (SELECCIONAR conteo (*) como conteo FROM servicio s DONDE s.service_id =?) = 0 luego ''No filas, hermano!'' else ''¡Obtuviste datos! "final como stupid_message;