在进行数据库查询时,偶尔会遇到字符串拼接的情景,我们通常会运用concat函数进行字符串的拼接。但在使用该函数时,需要注意如下细节:
拼接字符串str1、str2时,我们会如下使用:concat(str1,str2),在数据库中操作时例如:
select concat(str1,str2) from t_user;
(其中str1和str2是t_user表的两个字段),正常来说该查询语句会返回str1和str2拼接之后的值,可在实际运用过程中会出现意想不到的结果,例如:str1为null,str2为"aaa",返回的结果为null,并不是我们期待的"aaa"。
出现这种情况是因为concat函数在使用时,它会判断他的参数是否有为null的情况,只要有其中一个参数为null,则concat函数返回值就为null,上述示例如果想返回"aaa",则需要将SQL语句进行如下修改:
select concat(ifnull(str1,"defaultvalue"),str2) from t_user
这里使用了ifnull函数,该函数的用处是判断一个字段是否为null,如果为null,第二个参数则为该字段指定一个默认值。
不过,不建议在数据库中存储数据的时候不要存null值,最好是给该列设置一个默认值,因为如果某一列存在null值,则该列的创建的索引将会失效,null的查询效率低。