美文网首页
mysql工作记录

mysql工作记录

作者: fight10000H | 来源:发表于2018-12-07 18:27 被阅读0次

    批量追加字符类型字段内容

    需求

    字段类型为字符串,保存的是由页面textarea控件提交的值,现在需要批量追加一些内容。

    遇到的问题

    使用concat字符串拼接函数将内容追加在原内容后面,sql执行后提示成功,但实际上没有全部修改成功。

    分析

    查看表结构

    desc test;
    
    表结构.png

    查看数据

    select * from test;
    
    数据.png

    使用concat函数进行拼接字符

    select id,note '原内容',concat(note,'要拼接的内容') '拼接后的内容' from test;
    
    拼接结果.png

    从拼接结果可以看出,为空(null)的字段拼接后的结果也为空(null),空字符串('')拼接后是有值的,所以我们需要修改判断字段是否为空

    修改后的sql

    select id,note '原内容',case when note is null then '要拼接的内容' else concat(note,'要拼接的内容') end '拼接后的内容' from test;
    
    正确的拼接结果.png

    添加换行符优化拼接结果

    select id,note '原内容',case when note is null then '要拼接的内容' else concat(note,'\r\n要拼接的内容') end '拼接后的内容' from test;
    
    优化1.png

    但这样会导致一个问题,原来为空字符的内容也会追加一个换行符,需要再优化一下。

    select id,note '原内容',case when note is null or note ='' then '要拼接的内容' else concat(note,'\r\n要拼接的内容') end '拼接后的内容' from test;
    
    优化2.png

    将空字符('')和空值(null)放在一起处理即可。

    最终批量追加内容sql

    update test set note = case when note is null or note ='' then '要拼接的内容' else concat(note,'\r\n要拼接的内容') end;
    
    批量追加内容.png 页面显示.png

    总结:

    • concat函数拼接时,如果字段内容为null,结果为null。
    • case when 函数也可用于update语句。
    • textarea内容里的换行符对应mysql里的符号是\r\n。

    相关文章

      网友评论

          本文标题:mysql工作记录

          本文链接:https://www.haomeiwen.com/subject/gjxxhqtx.html