我对学生注册表有以下查询,其中包含student_id,first_name,enrollment_date(DATETIME),price(Float)作为列, 我的问题是当我在 MySQL 上运行此查询时,我得到了一个" BLOB"当存在价格值时,查询第一部分的价格列的值以及查询的第二部分中的价值列。
我想将结果提取到csv,并且不希望" NULL"在excel表中,因此我使用了IFNULL条件,这似乎是" BLOB"价格列上的价值。 如果我在价格列上没有IFNULL,我会得到" NULL"被设置为价格列。
如果我将IFNULL(价格,'')更改为IFNULL(价格,0),那么事情也可行,但我人为地提出了一个' 0'对于价格,当它为空时,我不想做...任何帮助?
select
student_id AS AS `student_id`,
first_name AS `first_name`,
enrolment_date AS `enrolment_date`,
IFNULL(price, '') AS `price`,
IFNULL(price * 0.1, '') AS `gst`,
IFNULL(price * 1.1, '') AS `price_ex_gst`
from
student_enrolment
where
student_id = 123 and
month(enrolment_date) = 10
union all
select
student_id AS `student_id`,
count(1) AS `count(1)`,
'Total' AS `Total`,
sum(`price`) AS `sum(price)`,
(sum(`price`) * 0.1) AS `gst`,
(sum(`price`) * 1.1) AS `price_ex_gst`
from
student_enrolment
where
student_id = 123 and
month(enrolment_date) = 10
答案 0 :(得分:1)
我认为问题是数据类型。将价格转换为字符串,然后使用ifnull()
:
IFNULL(format(price, 4), '') AS `price`,
IFNULL(format(price * 0.1, 4), '') AS `gst`,
IFNULL(format(price * 1.1, 4), '') AS `price_ex_gst`
作为备注:我会使用coalesce()
而不是ifnull()
,因为coalesce()
是用于此目的的ANSI标准函数。