当你CONCAT_WS(' ',field1,field2,field3)在MySQL中,如果其中一个字段为空,不为空,你会得到多重分隔符.
一个例子可以是:
John[space][space][space]Doe[space]III.
Run Code Online (Sandbox Code Playgroud)
如何确保只有一个分隔符.
我有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并将它们加入那里?)
事实证明我得到了一个NULL; PHP同样处理返回的NULL和空字符串(""),您必须与===进行比较才能看到差异.