【发布时间】:2012-01-02 10:41:21
【问题描述】:
我正在导出SELECT result to CSV via INTO OUTFILE。我有一系列用于格式化数据的简单 SQL 字符串函数。例如:CONCAT('$',FORMAT(property.price,2))。如果值为 NULL,我想返回一个空字符串,但我不确定如何同时执行这两个操作。
我还想知道将TinyInt 的值设为 0 或 1 并返回“是”或“否”的最简单方法。
【问题讨论】:
我正在导出SELECT result to CSV via INTO OUTFILE。我有一系列用于格式化数据的简单 SQL 字符串函数。例如:CONCAT('$',FORMAT(property.price,2))。如果值为 NULL,我想返回一个空字符串,但我不确定如何同时执行这两个操作。
我还想知道将TinyInt 的值设为 0 或 1 并返回“是”或“否”的最简单方法。
【问题讨论】:
对于 tinyint,您可以使用 IF 运算符
select if(tinyint_value,'yes','no')
对于第一部分,您也可以使用 if 运算符
select if(property.price is not null, CONCAT('$',FORMAT(property.price,2)),'')
【讨论】:
要根据列的值返回yes、no 或空字符串,您可以这样使用大小写:
select case column when 1 then 'Yes' else 'No' end as columalias ,
case when stringcolumn is NULL then '' else stringcolumn end as stringcolumn
from table
或
select case column when 1 then 'Yes' else 'No' end as columalias ,
IFNULL(stringcolumn,'') as stringcolumn
from table
【讨论】:
case stringcolumn when NULL ... 将不起作用。应该是case WHEN stringcolumn IS NULL THEN ...。
您可以使用coalesce() 函数。它返回第一个不为 NULL 的参数。
SELECT COALESCE(NULL, 1);
-> 1
SELECT COALESCE(2, 1);
-> 2
【讨论】: