首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于获取此结果的Sql查询

问用于获取此结果的Sql查询
EN

Stack Overflow用户
提问于 2010-04-16 12:37:09
回答 5查看 121关注 0票数 4

假设我有一个user表,我有三个列mobilePhone、homePhone和workPhone...

我必须为每个用户选择homePhone作为首选

如果没有值

**我会选择mobilePhone和

如果它没有价值,我就不知道了

现在,我会去找workPhone……

有什么建议可以在mysql中实现吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-16 12:39:20

尝试使用Sql Server COALESCE (Transact-SQL),

返回其参数中的第一个非空表达式。

MySql COALESCE(value,...) 也是如此

返回列表中的第一个非空值,如果没有非空值,则返回NULL。

就像这样

代码语言:javascript
复制
SELECT  COALESCE(homePhone, mobilePhone, workPhone) ContactPhone
FROM    Users
票数 7
EN

Stack Overflow用户

发布于 2010-04-16 12:40:14

您需要返回第一个非空值的Coalesce函数:

代码语言:javascript
复制
Select Coalesce(homephone, mobilephone, workphone) Phone
From `user`

MySQL中确实存在Coalesce。它是ANSI定义的函数。

Coalesce function (MySQL).

票数 3
EN

Stack Overflow用户

发布于 2010-04-16 12:41:05

代码语言:javascript
复制
SELECT user, homePhone 
FROM user
WHERE homePhone != ''

UNION

SELECT user, mobilePhone 
FROM user
WHERE homePhone = '' AND mobilePhone != ''

UNION 

SELECT user, workPhone 
FROM user
WHERE homePhone = '' AND mobilePhone = ''
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2650638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档