MySQL中CONCAT()函数拼接出现NULL的问题解决,mysql中拼接2个字段内容到一个字段内容
web Mysql 2023-09-04 744 0
关于本站

“最难不过坚持”

本人承接扒站仿站,php网站维护,病毒查杀,网站编辑,网站改版,html制作

有需要网站维护,改版,病毒查杀,网站编辑,网站备案,html制作等相关的工作可以联系我。
本人有多年相关工作经验,也可提供免费咨询,交个朋友。
有需要探讨问题的朋友,也可以加我微信,共同探讨!
微信:15011482830 QQ:408917339

6426406 2611 39
最新评论
https://jueru.net/
评 留言
:weixiao:
评 留言
:shuijiao: :weiqu: :zhenbang: :leng:
评 留言
:yiwen: :yiwen: :yiwen: :yiwen:
评 EasySass: could not generate CSS file. See Output panel for details.
这个业务逻辑多少都有点奇怪了,阅读浏览次数增值在新闻详情页的控制器方法里setInc,这怎么还写进模型事件里了。如果非要用onAfterRead也可以,把新闻文章的内容单独分出来一个news_content表,然后把它和news做关联,然后给news_content表的onAfterRead事件做增值处理,这样点进新闻页内查询到文章内容时才会触发它。
评 TP6模型事件-查询后onAfterRead不好用
文章标签更多
ThinkPHP (254)
Mysql (58)
DedeCms (33)
jQuery (67)
证件照 (1)
setInc (4)
setDec (4)
onclick (5)
打开边栏(ESC) 关闭边栏(ESC)

项目中查询用到了concat()拼接函数,在此查询中出现了拼接的字段为null的情况,拼接结果为null在应用层报了空指针异常。

SELECT CONCAT('1,',NULL,'2') result;

from clipboard

SELECT CONCAT('1,','','2') result;

from clipboard

通过实践证明CONCAT()函数拼接时如果拼接的参数中有NULL时,结果为NULL。


使用以下方式来解决

方法一:使用IFNULL函数如果是NULL将其置为''空字符串。

SELECT CONCAT('1,',IFNULL(NULL,''),'2') result;

from clipboard

方法二:使用CONCAT_WS函数。指定有分隔符的字符串连接

SELECT CONCAT_WS(',','1',NULL,'2') result;

指定使用逗号进行分隔

from clipboard

CONCAT_WS(分隔符,参数1,参数2,...参数n)与CONCAT(参数1,参数2,...参数n)

两个函数的区别:

CONCAT_WS():表示concat with separator,即有分隔符的字符串连接

CONCAT():表示将字符串进行连接

两个最重要的区别就是,CONCAT()函数,拼接参数中存在NULL直接返回NULL

而CONCAT_WS()函数在执行的时候,不会因为NULL值而返回NULL


实际应用:mysql中拼接2个字段内容到一个字段内容

from clipboard

数据表中有2个字段remark1,remark2,需要把remark2的内容合并到remark1里面,remark1里面的内容需要保留

方法1:

UPDATE d_bill SET remark1=CONCAT(IFNULL(remark1,''),IFNULL(remark2,''))

判断字段值是否为NULL,如果为NULL则转换为空

方法2:

UPDATE d_bill SET remark1=CONCAT_WS(',',remark1,remark2)

以','拼接2个字段,如果remark1或者remark2有一个值为NULL则不会出现分隔符',',但是会合并成功

注意:如果remark1和remark2的值是空字符,不是NULL,那么会出现分隔符',',显得有点别扭

版权声明:本篇文章来源于网络。 来源链接

相关推荐
MySQL提示“SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)”错误
Mysql | 2019-08-30 26401
在登录用thinkphp框架做的网站后台时,提示: MySQL提示“SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)”错误 怀疑是数据库连接密码错误,仔细检查了config.php文件,发现没有错误,...
Navicat for Mysql 如何备份数据库psc格式
Mysql | 2017-12-27 10055
Navicat for Mysql 如何备份数据库psc格式 navicat 备份数据库放在哪里 1,打开要备份的数据库,在 Navicat 界面的菜单栏中选择“备份”功能按钮。 2,在导航栏中点击“新建备份”按钮。 3,在弹出的新建备份窗口中点击“开始”按钮,执行备份的命令。 ...
评论:0条
评论加载中...
发表评论