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.