有没有小伙伴遇到过这样的需求:通过后台管理系统输入某种富文本内容,并在前台显示出来。但是后台管理系统中又要求你不能显示出来这些html标签呢?

文章目录

  • 1. 简单查询
  • 2. 通过 regexp_replace 函数去掉html标签
  • 3. 优化sql,去掉残留的“/n”
  • 4. 如果使用到Mybatis的xml中请注意
  • 5. 一些知识点总结
  • 6. 2021-12-20 补充

小名上面叙述得可能不太清晰,大家可以先看一下从数据库查出来的结果:

请注意en_message这个字段中的内容,是前端在后台管理系统中上传的富文本,用来在前台中显示的一些内容。

但是现在的需求是:在后台管理系统中将这些html标签去掉,只返回纯文本,此时小名查表是通过sql语句写的。

1. 简单查询
SELECTid,title,en_title,message,en_message,sort,is_deleted,create_time,update_time
FROMsa_introduce
WHEREis_deleted = 0

通过这种方式查询的结果:

可以看出并非我们想要的结果。

2. 通过 regexp_replace 函数去掉html标签
SELECTid,title,en_title,regexp_replace (  message, '<.+?>', '') message,en_message,sort,is_deleted,create_time,update_time
FROMsa_introduce
WHEREis_deleted = 0

通过这种方式查询的结果:

请注意message这个字段中的内容,是呈现了小名希望的结果!!!


可此时,前端的小伙伴跑来找小名,说我为什么不能送佛送到西,将内容处理干净返给他们,这就搞得小名一头雾水,大家也看到了上面的结果,简直完美~

既然人家这么说了,小名还是自测一下。果然,postman中显示的结果,确实不尽如人意


postman中的结果如下:

没错,返回的结果中,竟然还有/n!!!难怪人家特地过来找小名~

3. 优化sql,去掉残留的“/n”
SELECTid,title,en_title,regexp_replace ( regexp_replace ( message, '<.+?>', ''),CHAR(10) , '' ) message,en_message,sort,is_deleted,create_time,update_time
FROMsa_introduce
WHEREis_deleted = 0

通过这种方式查询的结果:

postman中的结果如下:

如若不理解去掉/n要用到CHAR(10),小名归纳到了下文第五点的总结中了。

这次,大家就可以看出,不论是sql中的html标签,又或者是postman中的/n都被我们去掉了~大功告成!

4. 如果使用到Mybatis的xml中请注意
将 <.+?> 转义为 &lt;.+? &gt;

在xml中:

<select id="getIntroduce" resultType="***.entity.pojo.SaIntroduce">SELECTid,title,en_title,regexp_replace ( regexp_replace ( message, '&lt;.+?&gt;', ''),CHAR(10) , '' ) message,en_message,sort,is_deleted,create_time,update_timeFROM sa_introducewhere is_deleted = 0
</select>

5. 一些知识点总结

1)正则替换函数:regexp_replace()
只有mysql8.0以上才可以使用
regexp_replace(指定的字符串 , 被替换的字符串 , 用于替换的字符串)
例如:
regexp_replace ( message, ‘<.+?>’, ‘’)

2)char(9), char(10), char(13)分别是:
char(9) 表示水平制表符 (tab键 \t)
char(10) 表示换行键 (\n)
char(13) 表示回车键 (\r)

3)xml中的一些常用转义字符:

显示结果 描述 转义字符
空格 &nbsp;
< 小于号 &lt;
> 大于号 &gt;
& 与号 &amp;
" 双引号 &amp;
单引号 &amp;
6. 2021-12-20 补充

细心的测试小伙伴,查出来一个问题,如下图:

在返回值中,可能存在&nbsp;&times;这类“&**;”的转义字符,期望是去掉。根据上面的经验其实很简单,不过就是将上面的sql这里修改下

regexp_replace ( regexp_replace ( regexp_replace ( message, '<.+?>', '' ),'&+.+;',''), CHAR ( 10 ), '' ) message,

但是小名又在xml中遇到一个问题:

这里呢,我们需要将&+.+; 转义为 &amp;+.+;

即可~



如果觉得小名的文章帮助到了您,请关注小名的专栏【日常记错】,支持一下小名

通过sql去掉字段中的html标签相关推荐

  1. SQL去掉字段中的特殊字符

    我通过csv导入数据后,发现表中的数据却查不出来,原来是因为字段中含有换行符这些特殊字符了,把它们去掉就能正常查询了. MySQL查询去除水平制表符.回车符.换行符 去除水平制表符(tab键 或者 \ ...

  2. 【Sql】自动去掉字段中末尾的0 删除尾随0

    [Sql]自动去掉字段中末尾的0 删除尾随0 select trim(10.000)+0 from user;

  3. 将sql数据库字段中的NULL都替换为空

    NULL与空字符串 '' 是相同的????? 在MySQL中,这两者是完全不同的.NULL是指没有值,而"则表示值是存在的,只不过是个空值.(在Oracle中是相同的) 将sql数据库字段中 ...

  4. sql截取字段中一部分值

    sql截取字段中一部分值 查出表中reportDept 字段倒数两位的内容不等于"天津"的内容 select * from (select reportDept from emp) ...

  5. 使用sql中replace()函数替换或去掉字段中的某些字符

    1.去掉字段name中的'A'字母: 可用REPLACE(chr,search_string[,replacement_string])函数: update device set name=repla ...

  6. SQL 如何去掉字段中千位的逗号(比如set @= '1,320.00' 想得到@= '1320.00' )

    1/去掉字段里的逗号.(比如set   @= '1,320.00'   想得到@= '1320.00' ) UPDATE  table  SET  fieldA = REPLACE(fieldA, ' ...

  7. SQL替换字段中部分字符

    示例: tb_item表中image字段中一数据为:jd/4ef8861cf6854de9889f3db9b24dc371.jpg update tb_item set image = replace ...

  8. SQL判断字段中是否存在数字、汉字、字母、英文

    --1.判断是否存在汉字 select * from 表名 where 列名 like '%[吖-座]%'--2.判断是否存在汉字以外的其他字符 select * from 表名 where 列名 l ...

  9. mysql去掉字段中的中文括号及括号中的内容

    select titile,regexp_replace(title,'[(|(].+[)|)]','') from mdm_tree; 原字段:title 去掉中文括号及括号中内容: regexp_ ...

最新文章

  1. 闲鱼同城第三方对接架构设计
  2. [转]json2.js 源码解读
  3. centos7已有数据硬盘挂载_CentOS7如何添加硬盘和挂载硬盘
  4. 【Qt】New Features in Qt 5.15
  5. [蓝桥杯2016初赛]寒假作业-next_permutation枚举
  6. springboot 整合 kafka demo 顺便看一下源码
  7. 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
  8. 关于内核态和用户态切换开销的测试
  9. vue-cli 外部引入vue-router报错 Uncaught TypeError: Cannot redefine property: $router
  10. 马尔科夫决策过程(MDP) : GridWord(DP)
  11. Retrofit完美封装
  12. 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
  13. QGIS制作导出三维模型并发布
  14. COOC一款用于文献计量和知识图谱绘制的新软件
  15. 10.创建一个日期类MyDate, 包含年year、月month、日day三个属性
  16. 博取仪器3D产品配置
  17. 数据结构——栈和队列
  18. python使用 作为转义符的开始符号_Python使用____作为转义符的开始符号。
  19. 关于域名的一点小常识!
  20. kubernetes使用过程中问题汇总

热门文章

  1. codevs 3287 货车运输
  2. 用python爬取开放数据
  3. 用现成的脚本,终于把锤子便签笔记批量导出了
  4. IT知识百科:什么是OTN——光传送网?
  5. java wait notifyall_Java中的wait/notify/notifyAll
  6. Java版图书管理系统完整开发流程
  7. 网络 三【详解局域网:以太网、网络适配器、WLAN】
  8. 北风修仙笔记—2020年4月
  9. ECAT运动控制器ARM软件设计
  10. 招生目录自相矛盾?双一流宁波大学计算机学硕改考408