mysql - 如何在 sql 查询的空字段中显示文本?

标签 mysql sql

我必须从数据库中提取客户列表,但如果第二个地址字段为空,我想显示文本 None Provided。这是我的查询:

    select concat(first_name, " ", last_name) as CustomerName, address, 
    address2, postal_code 
    from customer
    inner join address 
    using (address_id);

如果 address2 为空,我想显示“未提供”。我怎么做?我确信答案非常简单,但我脑袋放屁,到处都找不到答案。

好的,这就是我最终的结果:

    case when address2=" " or address2 is null then 'None Provided' 
    else address2 end as address2,

有没有更好的方法来实现这一点?

最佳答案

您可以使用CASE:

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   case when address2 is null then 'None Provided' else address2 end as address2, 
   postal_code 
from customer
inner join address 
using (address_id);

或者更好COALESCE :

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   COALESCE(address2,'None Provided') as address2, 
   postal_code 
from customer
inner join address 
using (address_id);

如果数据包含空字符串或 null,那么我会考虑使用:

select concat(first_name, " ", last_name) as CustomerName, 
   address, 
   case 
     when address2 is null or address2 = '' 
     then 'None Provided' 
     else address2 end as address2, 
   postal_code 
from customer
inner join address 
using (address_id);

关于mysql - 如何在 sql 查询的空字段中显示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15231289/

相关文章:

mysql - 使用 GROUP BY 对总记录编写 SQL 查询

mysql - 我无法通过 ruby​​ on rails 连接到远程 mysql 服务器

mysql - SQL WHERE 查询,编辑现有查询

sql - MySQL - 选择连接整行

mysql - 如何通过终端在mysql中连续上传文件的全文

mysql - 每周和日内数据汇总

mysql - 如何在 INSERT IGNORE 语句中获取被忽略行的 PK

mysql - SQL 查询复制值 - 初学者

sql - 从带参数的集合返回函数插入表

sql - 如何在字符串中嵌入变量?