相关疑难解决方法(0)

如何concat_ws多个字段并删除空插槽的重复分隔符

当你CONCAT_WS(' ',field1,field2,field3)在MySQL中,如果其中一个字段为空,不为空,你会得到多重分隔符.

一个例子可以是:

John[space][space][space]Doe[space]III.
Run Code Online (Sandbox Code Playgroud)

如何确保只有一个分隔符.

mysql sql concatenation

14
推荐指数
1
解决办法
4717
查看次数

MySQL返回一个空字段:CONCAT(nonEmpty1,empty2,nonEmpty3)= NULL

我有PHP 5代码访问MySQL 5服务器上的MyISAM表.查询如下所示:

SELECT CONCAT(fName1,' ',mName2,' ',lName3) AS userName 
    FROM users 
    WHERE level > 10
Run Code Online (Sandbox Code Playgroud)

当没有MNAME填写,我期待像"FNAME LNAME"输出,但我发现了""(空字符串),而不是(返回的行数是正确的).我哪里弄错了?

PHP代码:

<?php
$result = mysql_query($the_above_query);
while ($result_row = mysql_fetch_assoc($result)) {
    // do stuff with the name
    // except I'm getting empty strings in $result_row['userName']
}
Run Code Online (Sandbox Code Playgroud)

表结构的相关部分:

CREATE TABLE users {
    /* -snip- */ 
    `fName1` varchar(50) default NULL,      
    `mName2` varchar(50) default NULL,      
    `lName3` varchar(50) default NULL,      
    `level` int(11) default 0,      
    /* -snip- */ 
} ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)

(也就是说,这种方式(MySQL中的列连接)是一个好主意,或者我应该将列提取到PHP并将它们加入那里?)


事实证明我得到了一个N​​ULL; PHP同样处理返回的NULL和空字符串(""),您必须与===进行比较才能看到差异.

mysql null

13
推荐指数
3
解决办法
2万
查看次数

标签 统计

mysql ×2

concatenation ×1

null ×1

sql ×1