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

【SQL】筛选某一列字段中,截取含有关键词“XX”字段位置的前4个字段,去重后查看字段

最近在查询数据库的一些数据,想要统计表格里有多少公司,发现表格里没有公司这一列,只能从但是有一些标题字段,只能从中筛选。

假设关键词是[公司],我们要在数据库的表格中,找到名为title的列,列里面所有含有【公司】的名称,且因为公司名称不定,则直接公司前6位的字符,直接整理出一个名单出来

要清洗的数据格式类似这样:
在这里插入图片描述
想要实现的效果:
在这里插入图片描述

要实现这个需求,我们需要编写一个SQL查询,该查询要包含下面的条件:

  1. 需要从文本中筛选包含“公司”关键词的字段

  2. 需要找到“公司”关键词在字段中的位置,然后截取“公司”关键词位置前的X个字符(X 代表多少个,这个需要自己按照现实情况决定)

  3. 需要对重复数据做去重

以下是一个SQL查询的示例,假设你的表名为your_table,列名为title,我们将使用MySQL的函数作为示例:

SELECT DISTINCT SUBSTRING(title, 1, CHAR_LENGTH(title) - CHAR_LENGTH(REPLACE(title, '公司', '')) + 6) AS company_name
FROM your_table
WHERE title LIKE '%公司%';

如果想要计算数值,在distinct前面加一个count就可以了

这个查询会做以下事情:

  1. REPLACE:替换掉字段中的所有关键词,替换为空字符串。

  2. CHAR_LENGTH(title) - CHAR_LENGTH(REPLACE(title, 'XX', ''))
    计算整体的关键词的总长度。

  3. CHAR_LENGTH(title) - CHAR_LENGTH(REPLACE(title, 'XX', '')) + 4
    计算“公司”关键词前4个字符的位置。

  4. SUBSTRING(title, 1, CHAR_LENGTH(title) - CHAR_LENGTH(REPLACE(title, '公司', '')) + 4)
    根据上一步计算的位置,截取“公司”关键词前的4个字符。

  5. DISTINCT:去除结果中的重复项。

  6. WHERE title LIKE '%公司%':筛选出title列中包含“公司”关键词的字段。

如果没有用CHAR_LENGTH 来计算长度的话,使用LEFT 也可以查询,但是会获取到标题的前N个字符:

SELECT COUNT(DISTINCT LEFT(your_column, 4)) AS unique_count
FROM your_table
WHERE your_column LIKE '%医院%';

http://www.kler.cn/a/454897.html

相关文章:

  • PDF书籍《手写调用链监控APM系统-Java版》第11章 插件与链路的结合:HttpClient插件实现跨进程传输TraceSegment
  • OpenCV-Python实战(8)——图像变换
  • 探索基金聚合平台的背景与发展:Finanzen.net、Franklin Templeton、Finect
  • STM32完全学习——FATFS0.15移植SD卡
  • AI客服机器人如何帮助企业应对高峰期客户咨询压力?
  • LeetCode--239.滑动窗口最大值(使用双端队列解决)
  • docker拉取rabbitmq镜像时报Client.Timeout exceeded while awaiting header错误处理办法
  • Linux-Ubuntu之串口通信
  • ChatGPT助力数据可视化与数据分析效率的提升(二)
  • lua debug相关方法详解
  • leetcode82:删除链表中的重复元素II
  • 【蓝桥杯】走迷宫
  • 题海拾贝:蓝桥杯 2020 省AB 乘法表
  • 免费资源网站
  • ANSYS EMC Plus:谐振腔中的天线
  • Markdown语法字体字号讲解
  • git revert
  • 【C#】WPF设置Separator为垂直方向
  • (icml2024)SLAattention,基于原文时序模型进行改进
  • 【AIGC篇】AIGC 引擎:点燃创作自动化的未来之火