问题与CONCAT()mysql?

时间:2016-08-02 12:44:34

标签: php mysql

我有一个table,我正在运行query并从表格中获取全名

SELECT CONCAT(f_name ,  " - ",  l_name )  as fullname FROM  user

它很好但是我在l_name中没有值,默认为null

它没有给f_name而是给了我NULL

4 个答案:

答案 0 :(得分:3)

您可以使用CONCAT_WS:

SELECT CONCAT_WS(' - ', f_name,  l_name)  as fullname FROM  user

如果值为null,concat将返回null,concat_ws将只跳过空值。

答案 1 :(得分:1)

是的,如果任何变量为null,则返回null。 您可以在mysql中使用if进行检查,如果任何值为null,则返回''否则是实际价值  SELECT CONCAT(if(f_name为null,'',f_name),    if(f_name不为null且l_name不为null," - ",""),    if(l_name为null,'',l_name))  作为fullname FROM用户 在查询中,您需要检查以满足需求。它应该只出现且仅当没有值为null时才出现。

答案 2 :(得分:1)

使用CASE表达式 检查l_name列是否为空且仅包含空格 如果是这样,请避免添加-字符和l_name以及f_name 否则,请-添加l_namef_name

<强>查询

select concat(f_name,(
    case when l_name is null or length(trim(l_name)) = 0 then '' 
    else concat('-', l_name) end)
) as fullname
from user;

答案 3 :(得分:1)

试试这个

SELECT concat(f_name ,  if(l_name is null,'',concat("-", l_name) ) ) fullname 
FROM  user