通过sql去掉字段中的html标签
有没有小伙伴遇到过这样的需求:通过后台管理系统输入某种富文本内容,并在前台显示出来。但是后台管理系统中又要求你不能显示出来这些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中请注意
将 <.+?> 转义为 <.+? >
在xml中:
<select id="getIntroduce" resultType="***.entity.pojo.SaIntroduce">SELECTid,title,en_title,regexp_replace ( regexp_replace ( message, '<.+?>', ''),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中的一些常用转义字符:
显示结果 | 描述 | 转义字符 |
---|---|---|
空格 | | |
< | 小于号 | < |
> | 大于号 | > |
& | 与号 | & |
" | 双引号 | & |
’ | 单引号 | & |
6. 2021-12-20 补充
细心的测试小伙伴,查出来一个问题,如下图:
在返回值中,可能存在
和×
这类“&**;”的转义字符,期望是去掉。根据上面的经验其实很简单,不过就是将上面的sql这里修改下
regexp_replace ( regexp_replace ( regexp_replace ( message, '<.+?>', '' ),'&+.+;',''), CHAR ( 10 ), '' ) message,
但是小名又在xml中遇到一个问题:
这里呢,我们需要将&+.+;
转义为 &+.+;
即可~
如果觉得小名的文章帮助到了您,请关注小名的专栏【日常记错】,支持一下小名
通过sql去掉字段中的html标签相关推荐
- SQL去掉字段中的特殊字符
我通过csv导入数据后,发现表中的数据却查不出来,原来是因为字段中含有换行符这些特殊字符了,把它们去掉就能正常查询了. MySQL查询去除水平制表符.回车符.换行符 去除水平制表符(tab键 或者 \ ...
- 【Sql】自动去掉字段中末尾的0 删除尾随0
[Sql]自动去掉字段中末尾的0 删除尾随0 select trim(10.000)+0 from user;
- 将sql数据库字段中的NULL都替换为空
NULL与空字符串 '' 是相同的????? 在MySQL中,这两者是完全不同的.NULL是指没有值,而"则表示值是存在的,只不过是个空值.(在Oracle中是相同的) 将sql数据库字段中 ...
- sql截取字段中一部分值
sql截取字段中一部分值 查出表中reportDept 字段倒数两位的内容不等于"天津"的内容 select * from (select reportDept from emp) ...
- 使用sql中replace()函数替换或去掉字段中的某些字符
1.去掉字段name中的'A'字母: 可用REPLACE(chr,search_string[,replacement_string])函数: update device set name=repla ...
- SQL 如何去掉字段中千位的逗号(比如set @= '1,320.00' 想得到@= '1320.00' )
1/去掉字段里的逗号.(比如set @= '1,320.00' 想得到@= '1320.00' ) UPDATE table SET fieldA = REPLACE(fieldA, ' ...
- SQL替换字段中部分字符
示例: tb_item表中image字段中一数据为:jd/4ef8861cf6854de9889f3db9b24dc371.jpg update tb_item set image = replace ...
- SQL判断字段中是否存在数字、汉字、字母、英文
--1.判断是否存在汉字 select * from 表名 where 列名 like '%[吖-座]%'--2.判断是否存在汉字以外的其他字符 select * from 表名 where 列名 l ...
- mysql去掉字段中的中文括号及括号中的内容
select titile,regexp_replace(title,'[(|(].+[)|)]','') from mdm_tree; 原字段:title 去掉中文括号及括号中内容: regexp_ ...
最新文章
- 闲鱼同城第三方对接架构设计
- [转]json2.js 源码解读
- centos7已有数据硬盘挂载_CentOS7如何添加硬盘和挂载硬盘
- 【Qt】New Features in Qt 5.15
- [蓝桥杯2016初赛]寒假作业-next_permutation枚举
- springboot 整合 kafka demo 顺便看一下源码
- 【codevs1368】【BZOJ1034】泡泡堂BNB,贪心思路
- 关于内核态和用户态切换开销的测试
- vue-cli 外部引入vue-router报错 Uncaught TypeError: Cannot redefine property: $router
- 马尔科夫决策过程(MDP) : GridWord(DP)
- Retrofit完美封装
- 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
- QGIS制作导出三维模型并发布
- COOC一款用于文献计量和知识图谱绘制的新软件
- 10.创建一个日期类MyDate, 包含年year、月month、日day三个属性
- 博取仪器3D产品配置
- 数据结构——栈和队列
- python使用 作为转义符的开始符号_Python使用____作为转义符的开始符号。
- 关于域名的一点小常识!
- kubernetes使用过程中问题汇总
热门文章