【问题标题】:MySQL Formating Strings or Returning Empty string on NULLMySQL 格式化字符串或在 NULL 上返回空字符串
【发布时间】:2012-01-02 10:41:21
【问题描述】:

我正在导出SELECT result to CSV via INTO OUTFILE。我有一系列用于格式化数据的简单 SQL 字符串函数。例如:CONCAT('$',FORMAT(property.price,2))。如果值为 NULL,我想返回一个空字符串,但我不确定如何同时执行这两个操作。

我还想知道将TinyInt 的值设为 0 或 1 并返回“是”或“否”的最简单方法。

【问题讨论】:

    标签: mysql string null


    【解决方案1】:

    对于 tinyint,您可以使用 IF 运算符

    select if(tinyint_value,'yes','no')
    

    对于第一部分,您也可以使用 if 运算符

    select if(property.price is not null, CONCAT('$',FORMAT(property.price,2)),'')
    

    【讨论】:

      【解决方案2】:

      要根据列的值返回yesno 或空字符串,您可以这样使用大小写:

      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 ...
      • 谢谢,使用 if 对于我正在做的事情来说更简单一些,但我可以看到这在哪里有用
      【解决方案3】:

      您可以使用coalesce() 函数。它返回第一个不为 NULL 的参数。

      SELECT COALESCE(NULL, 1);
      -> 1
      SELECT COALESCE(2, 1);
      -> 2
      

      【讨论】:

        猜你喜欢
        • 2013-01-02
        • 1970-01-01
        • 1970-01-01
        • 2018-12-29
        • 1970-01-01
        • 2017-03-05
        • 2020-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多