No MySQL, existe uma maneira de definir os campos "total" para zero se forem NULL?
Aqui está o que eu tenho:
SELECT uo.order_id, uo.order_total, uo.order_status,
(SELECT SUM(uop.price * uop.qty)
FROM uc_order_products uop
WHERE uo.order_id = uop.order_id
) AS products_subtotal,
(SELECT SUM(upr.amount)
FROM uc_payment_receipts upr
WHERE uo.order_id = upr.order_id
) AS payment_received,
(SELECT SUM(uoli.amount)
FROM uc_order_line_items uoli
WHERE uo.order_id = uoli.order_id
) AS line_item_subtotal
FROM uc_orders uo
WHERE uo.order_status NOT IN ("future", "canceled")
AND uo.uid = 4172;
Os dados são bons, exceto que os campos NULL devem ser 0
.
Como posso retornar 0 para NULL no MySQL?
Você pode usar em
coalesce(column_name,0)
vez de apenascolumn_name
. Acoalesce
função retorna o primeiro valor não NULL da lista.Devo mencionar que funções por linha como essa geralmente são problemáticas para escalabilidade. Se você acha que seu banco de dados pode ter um tamanho decente, geralmente é melhor usar colunas e gatilhos extras para mover o custo de
select
para oinsert/update
.Isso amortiza o custo, pressupondo que seu banco de dados seja lido com mais frequência do que escrito (e a maioria deles).
fonte
Nenhuma das respostas acima foi completa para mim. Se o seu campo for nomeado
field
, o seletor deverá ser o seguinte:Por exemplo, em uma consulta SELECT:
Espero que isso ajude alguém a não perder tempo.
fonte
Você pode tentar algo assim
Presume-se que o atributo X esteja vazio se for uma String vazia; portanto, você poderá declarar como zero em vez de último valor. Em outro caso, permaneceria seu valor original.
Enfim, apenas para dar outra maneira de fazer isso.
fonte
Sim A função IFNULL estará trabalhando para alcançar o resultado desejado.
fonte