连接同一表的两列,忽略空值。MySql
我试图连接同一个表的两列,但是,如果有空值(在我的例子中,它们在第二列中),我想取我感兴趣的行,而不是放空值,我会放连接同一表的两列,忽略空值。MySql,mysql,sql,Mysql,Sql,我试图连接同一个表的两列,但是,如果有空值(在我的例子中,它们在第二列中),我想取我感兴趣的行,而不是放空值,我会放'。我想加入的列是姓氏和姓名。换句话说,我试图使用: SELECT CONCAT(CSurname, ' ', CName) FROM Client; 这样,如果我的姓氏有一个有效值,名字有一个空值,我就得到空值。我使用MySql,谢谢。如果您想避免前导空格的问题,那么最简单的方法可能是CONCAT\u WS(): 与大多数其他函数不同,CONCAT_WS()忽略NULL值(分隔
'
。我想加入的列是姓氏
和姓名
。换句话说,我试图使用:
SELECT CONCAT(CSurname, ' ', CName)
FROM Client;
这样,如果我的姓氏有一个有效值,名字有一个空值,我就得到空值。我使用MySql,谢谢。如果您想避免前导空格的问题,那么最简单的方法可能是
CONCAT\u WS()
:
与大多数其他函数不同,CONCAT_WS()
忽略NULL
值(分隔符除外),这大大简化了此逻辑,尤其是在处理两个以上的列时
没有它,等效逻辑可以表示为:
SELECT CONCAT(COALESCE(CONCAT(CSurname, ' '), ''), COALESCE(CName, ''))
试试这个函数
我没有本地mysql安装可以试用,但IFNULL函数应该可以满足您的需要。如果我没有姓氏值,我会获得一个空格和一个名称,它们位于表的开头。我能做些什么来忽略这个空格并按字母顺序排列我的信息?@salvo9415。缺少的值是NULL还是空字符串?
SELECT CONCAT(COALESCE(CONCAT(CSurname, ' '), ''), COALESCE(CName, ''))
SELECT CONCAT(CSurname, ' ', IFNULL(CName,'')) FROM Client;