MySQL:去除\n字符串
记录一下今天在工作时候遇到的一个问题,在前台录入数据的时候,可能会将Excel中换行符复制到了前台页面中,然后保存到了数据库中。
我这里贴上一点sql文件,仅供测试使用:
DROP TABLE IF EXISTS `ucas_test`; CREATE TABLE `ucas_test` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `material_macode` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '材料序号', `material_maname` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '材料名称', `protype_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工程类型id', `mtype_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '材料类型id', `whrid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '维护人id', `whr` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '维护人', `whsj` datetime(0) NULL DEFAULT NULL COMMENT '维护时间', `mtype_fid` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '材料类别fid', `material_type` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '材料类型', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8; INSERT INTO `ucas_test` VALUES ('MATERIAL202101231522200094', 'B-1-07-01', '工程地质勘查报告\n\n', 'PROTYPE202011301357520003', 'MTYPE202101231039480013', 'YH202103161026260030', '临时测试', '2021-05-07 08:32:11', 'MTYPE202101230931080002', '文字(张)'); INSERT INTO `ucas_test` VALUES ('MATERIAL202101231523550095', 'B-1-07-02', '水文地质勘查报告\n', 'PROTYPE202011301357520003', 'MTYPE202101231039480013', 'YH202103161026260030', '临时测试', '2021-05-07 08:32:22', 'MTYPE202101230931080002', '文字(张)'); INSERT INTO `ucas_test` VALUES ('MATERIAL202101231524220096', 'B-1-08-01', '勘察承包合同\n\n', 'PROTYPE202011301357520003', 'MTYPE202101231040280014', 'YH202103161026260030', '临时测试', '2021-05-07 08:32:34', 'MTYPE202101230931080002', '文字(张)'); INSERT INTO `ucas_test` VALUES ('MATERIAL202101231524530097', 'B-1-08-02', '设计承包合同\n', 'PROTYPE202011301357520003', 'MTYPE202101231040280014', 'YH202103161026260030', '临时测试', '2021-05-07 08:32:45', 'MTYPE202101230931080002', '文字(张)');
我们使用Notepad2软件打开SQL表格,就可以看到\n换行符了、
解决办法:
说明:mysql中
1 2 3 4 | char ( 9 ), char ( 10 ), char ( 13 )分别是: char ( 9 ) 表示水平制表符 (tab键 \t) char ( 10 ) 表示换行键 (\n) char ( 13 ) 表示回车键 (\r) |
第一步:必要:先来学习一下两个MySQL中函数
concat(str1,str2,…)
使用方法:
concat(str1,str2,…)
返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。
select concat('z','zx');
replace(object,search,replace)
object:要进行替换的列
search:要替换的数据
replace:替换成什么数据
意思:把object中出现search的全部替换为replace
第二步、进行更新数据
1.先查到要更改的数据
-- 第一种方式 SELECT * FROM ucas_test WHERE ucas_test.material_maname LIKE CONCAT( '%', CHAR ( 10 ), '%' ); -- 第二种方式 SELECT * FROM ucas_test WHERE ucas_test.material_maname LIKE '%\\\n%';
2、更新数据
-- 更新换行符为空串第一种方式 UPDATE ucas_test SET ucas_test.material_maname = REPLACE ( ucas_test.material_maname, CHAR ( 10 ), '' ) WHERE ucas_test.material_maname LIKE '%\\\n%'; -- 更新换行符为空串第二种方式 UPDATE ucas_test SET ucas_test.material_maname = REPLACE ( REPLACE ( ucas_material.material_maname, CHAR ( 10 ), '' ), CHAR ( 13 ), '' ) WHERE ucas_test.material_maname LIKE concat( '%', CHAR ( 10 ), '%' );
更新成功:
再导出SQL数据看一下是否更新成功:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话