2011-10-28 19 views
16

tengo una instrucción de selecciónComprobar si una sentencia SELECT devuelve ninguna fila

SELECT  QBalance 
FROM   dbo.CustomerBalance 
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId) 

Quiero comprobar si esa instrucción devuelve 0 filas. Traté de usar ISNULL e IFNULL, pero parece que me falta algo.

+1

En nulo, ¿quiere decir no filas, o un valor 'Null' real en QBalance? ¿Y qué le gustaría hacer si obtiene nulo? –

+0

yes by null I means no rows – Islam

+0

Para ayudarlo en el futuro, no hay filas diferentes de null. (Debe editar esta pregunta para cambiar a Sin Filas, y especificar lo que le gustaría que ocurra). –

Respuesta

1

probar esto:

SELECT  ISNULL(QBalance, 'ReplaceValue') 
FROM   dbo.CustomerBalance 
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId) 
+0

muy simple, muy agradable –

+6

@Jordan_Walters - No funciona, sin embargo. Si no existen filas, no hay ningún valor para aplicar 'ISNULL'. –

7
SELECT COUNT(*) 
FROM   dbo.CustomerBalance 
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId) 

Si obtiene 0, lo tienes 0. :)

34

Para saber si no existen filas coincidentes, puede usar NOT EXISTS. ¿Cuál puede ser más eficiente que contar todas las filas coincidentes?

IF NOT EXISTS(SELECT * FROM ...) 
BEGIN 
PRINT 'No matching row exists' 
END 
0

¿Podría también utilizar una verificación ISNULL externa?

SELECT ISNULL((
SELECT QBalance 
FROM dbo.CustomerBalance 
WHERE (CustomerID = 1) AND (MarchentID = @MerchantId)), 0) 
0

Puede usar @@ ROWCOUNT. Por ej.

SELECT  QBalance 
FROM   dbo.CustomerBalance 
WHERE  (CustomerID = 1) AND (MarchentID = @MerchantId) 

--This will return no of rows returned by above statement. 
SELECT @@ROWCOUNT 

Obtendrá 0 si la primera declaración no devolverá ninguna fila. También puede usar la instrucción if para verificar eso justo después del primer enunciado. p.ej.

IF @@ROWCOUNT <> 0 
    PRINT 'Select statement is returning some rows' 
ELSE 
    PRINT 'No rows returned' 
Cuestiones relacionadas