validar then texto reemplazar por ejemplos convertir cero campo actualizar sql tsql null sum

texto - sql if null then 0



¿Cómo puedo cambiar NULL a 0 cuando obtengo un valor único de una función SQL? (8)

La forma más fácil de hacerlo es simplemente agregar cero a su resultado.

es decir

$A=($row[''SUM''Price'']+0); echo $A;

¡¡espero que esto ayude!!

Tengo una consulta que cuenta el precio de todos los artículos entre dos fechas. Aquí está la declaración selecta:

SELECT SUM(Price) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

Puede suponer que todas las tablas se han configurado correctamente.

Si selecciono entre dos fechas y no hay elementos dentro de ese rango de fechas, la función devuelve NULL como TotalPrice en lugar de 0.

¿Cómo puedo asegurarme de que si no se encuentran registros, se devuelve 0 en lugar de NULL?


La mayoría de los servidores de bases de datos tienen una función COALESCE , que devolverá el primer argumento que no sea nulo, por lo que lo siguiente debe hacer lo que desee:

SELECT COALESCE(SUM(Price),0) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

[editar]

Solo para aclarar las cosas, ya que parece haber mucha discusión sobre "COALESCE / ISNULL aún devolverá NULL si no hay filas coincidentes", intente esta consulta, puede copiar y pegar en SQL Server directamente tal como está:

SELECT coalesce(SUM(column_id),0) AS TotalPrice FROM sys.columns WHERE (object_id BETWEEN -1 AND -2)

Tenga en cuenta que la cláusula where excluye todas las filas de sys.columns de la consideración, pero el operador ''suma'' sigue dando como resultado una única fila que se devuelve que es nula, y que se une para ser una sola fila con un 0.

Espero que esto ayude a explicarlo.


ORACLE / PLSQL:

FUNCIÓN NVL

SELECT NVL(SUM(Price), 0) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

Esta instrucción SQL devolvería 0 si SUM(Price) devolvió un valor nulo. De lo contrario, devolvería el valor SUM(Price) .


Podrías usar

SELECT ISNULL(SUM(ISNULL(Price, 0)), 0) .

Estoy 99% seguro de que funcionará.


Editar: Parece que todos los demás me golpearon, jaja

Encontré la respuesta.

ISNULL() determina qué hacer cuando tiene un valor nulo.

En este caso, mi función devuelve un valor nulo, por lo que necesitaba especificar un 0 para ser devuelto en su lugar.

SELECT ISNULL(SUM(Price), 0) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)


SELECT 0+COALESCE(SUM(Price),0) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)


SELECT COALESCE( (SELECT SUM(Price) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)) , 0)

Si la tabla tiene filas en la respuesta, devuelve SUM (precio). Si SUM es NULL o no hay filas, devolverá 0.

Poner COALESCE (SUMA (precio), 0) NO funciona en MSSQL si no se encuentran filas.


SELECT ISNULL(SUM(Price), 0) AS TotalPrice FROM Inventory WHERE (DateAdded BETWEEN @StartDate AND @EndDate)

Eso debería hacer el truco.