当前位置: 首页 > news >正文

SQL数据清理:去除字段值中的多余符号(Demo例子)

目录

  • 前言
  • 1. 基础
  • 2. 进阶

前言

Excel中有大量不合法的符号,导入到系统之后,数据库有很多脏数据,对此下述展开sql的清洗教程

在这里插入图片描述

在数据库的文本字段中,可能会存在多余的逗号或符号,如,销售,, 或 二手车,销售,,这种情况
希望清理这些数据,使其符合以下规则:

  • 去除前导和尾部的多余逗号,例如:
    二手车,销售,, → 二手车,销售
    ,生产,, → 生产

  • 保留中间合理的逗号分隔,例如:
    ,生产,销售 → 生产,销售(不用删除逗号)

1. 基础

  • 对于 MySQL 数据库
    MySQL 提供了 TRIM() 函数来删除字符串两端的空格,但没有直接删除两端特定字符的函数
    可以使用 TRIM() 结合 REPLACE() 函数来实现:
UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM matched_keywords);

TRIM(BOTH ',' FROM matched_keywords):删除 matched_keywords 字段值两端的逗号
如果字段值两端可能存在空格,可以进一步使用 TRIM() 函数处理空格:

UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM TRIM(matched_keywords));

  • 对于 PostgreSQL 数据库
    PostgreSQL 提供了 TRIM() 函数,可以直接指定删除的字符:
UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM matched_keywords);

TRIM(BOTH ',' FROM matched_keywords):删除 matched_keywords 字段值两端的逗号
如果需要同时处理空格,可以嵌套 TRIM() 函数:

UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM TRIM(matched_keywords));

  • 对于 SQL Server 数据库
    SQL Server 中没有直接的 TRIM() 函数,但可以通过 LTRIM() 和 RTRIM() 函数结合 REPLACE() 函数来实现:
UPDATE industry_monitoring
SET matched_keywords = LTRIM(RTRIM(REPLACE(REPLACE(matched_keywords, ', ', ''), ', ', '')));

REPLACE(matched_keywords, ', ', ''):移除字段值中的逗号和空格
LTRIM(RTRIM(...)):移除字段值两端的空格

注意事项

  1. 备份数据:在执行更新操作之前,建议备份相关数据,以防万一
  2. 测试语句:在实际更新之前,可以先用 SELECT 语句测试结果是否符合预期:(确保结果正确后再执行 UPDATE 语句)
SELECT matched_keywords, TRIM(BOTH ',' FROM TRIM(matched_keywords)) AS cleaned_keywords
FROM industry_monitoring;

通过上述 SQL 语句,可以有效地清理 matched_keywords 字段中多余的符号,同时保留字段值中间的符号

2. 进阶

如果数据中存在 连续的 ,(如 二手车,销售,),那么这个 SQL 只能去掉首尾的 ,,不会去掉中间的多余逗号

截图如下:

在这里插入图片描述

如果只是去掉前后的逗号,可以这样写:

UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM matched_keywords);

但如果要去掉 前后的逗号 + 连续的 ,,可以这样优化:

UPDATE industry_monitoring
SET matched_keywords = TRIM(BOTH ',' FROM REPLACE(matched_keywords, ',,', ','));
http://www.lryc.cn/news/535888.html

相关文章:

  • .NET版Word处理控件Aspose.Words教程:使用 C# 删除 Word 中的空白页
  • 【工业场景】用YOLOv8实现火灾识别
  • Flask Web开发的重要概念和示例
  • 【Antv G2 5.x】饼图添加点击事件,获取当前坐标数据
  • 深度学习-112-大语言模型LLM之langchain的聊天模型概述和基本概念介绍
  • Vue.js 实现树形结构管理系统的前端设计与实现
  • OSPF高级特性(3):安全特效
  • Unity Shader Graph 2D - Procedural程序化图形转动的环状六边形
  • 鸿蒙HarmonyOS NEXT开发:横竖屏切换开发实践
  • 汇能感知宠物智能监控模块
  • C# 两种方案实现调用 DeepSeek API
  • Android ndk兼容 64bit so报错
  • 计算机毕业设计——Springboot的校园新闻网站
  • Tauri Windows入门开发避坑指南
  • 用AI绘制CAD气温曲线图
  • 什么是http请求中的session
  • 全链路数据引擎:WhaleStudio驱动下的大数据调度与同步智能革新
  • PHP 中的除以零错误
  • 3.2 > Bash
  • 排序合集(一)
  • Spring:Spring实现AOP的通俗理解(有源码跟踪)
  • 通过openresty和lua实现随机壁纸
  • Day 36 卡玛笔记
  • 【Elasticsearch】match查询
  • MATLAB 生成脉冲序列 pulstran函数使用详解
  • 开源、免费项目管理工具比较:2025最新整理30款
  • ffmpeg -muxers
  • 设置mysql的主从复制模式
  • ASP.NET Core的贫血模型与充血模型
  • 君海游戏岗位,需要私我