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

【Sql】把数据库字段用函数根据逗号分裂成列表,然后判断列表中是否包含目标值

【Sql】把数据库字段用函数根据逗号分裂成列表,然后判断列表中是否包含目标值

  • 【1】问题描述
  • 【2】Oracle内置函数解决
  • 【3】mysql的内置函数INSTR()
  • 【4】mysql的内置函数FIND_IN_SET()

【1】问题描述

数据库中【库信息db】和【集群信息cluster】是一对多的关系,但是没有将集群信息存成多条,而是把集群名称和集群地址通过逗号拼接,然后存到一个字段里
在这里插入图片描述

现在需要根据集群名称,判断某个集群是否已经和库名SCHEMA_NM绑定了,因为CLUSTER_NM是拼接的字段,所以可以考虑模糊查询like,但是模糊查询匹配的不准确,我们想要确保完整准确的查询到集群名对应的记录

【2】Oracle内置函数解决

可以使用Oracle的内置函数来实现将数据库字段根据逗号分裂成列表,并判断列表中是否包含目标值。以下是一个示例查询:

SELECT* 
FROM( SELECT CLUSTER_NM, SCHEMA_NM FROM DB_X_CLUSTER WHERE INSTR( ',' || CLUSTER_NM || ',', ',模型集群111,' ) > 0 ) dxcLEFT JOIN PROJ_X_DB pxd ON pxd.SCHEMA_NM = dxc.SCHEMA_NMLEFT JOIN PROJ_INFO pi ON pxd.PROJ_ID = pi.id 
WHEREpi.PROJ_STAT = 0

主要注意的是这一段

SELECT CLUSTER_NM, SCHEMA_NM FROM DB_X_CLUSTER WHERE INSTR( ',' || CLUSTER_NM || ',', ',模型集群111,' ) > 0

(1)‘,’ || CLUSTER_NM || ‘,’:表示给数据库里的字段前后都加上逗号,原来的值也就变成了【,大数据平台集群111,模型集群111,】,这样就方便匹配
(2)‘,模型集群111,’:给要查的目标值的前后也加上逗号
(3)INSTR,判断字符串中是否包含目标值

【3】mysql的内置函数INSTR()

有时,您想要在字符串中查找子字符串或检查字符串中是否存在子字符串。在这种情况下,您可以使用字符串内置INSTR()函数。

INSTR()函数返回字符串中子字符串第一次出现的位置。如果在str中找不到子字符串,则INSTR()函数返回零(0)。

INSTR(str,substr);

str是要搜索的字符串。
substr是要搜索的子字符串。

【4】mysql的内置函数FIND_IN_SET()

可以使用MySQL的内置函数FIND_IN_SET()来实现这个需求。FIND_IN_SET()函数可以在一个由逗号分隔的字符串中查找一个值,如果找到,则返回其索引位置。

下面是一个示例查询,展示了如何将字段按逗号分割成列表,并判断列表中是否包含目标值:

SELECT *
FROM your_table
WHERE FIND_IN_SET('目标值', REPLACE(your_column, ' ', '')) > 0;

在上述查询中,您需要将your_table替换为您的表名,your_column替换为您要进行匹配的字段名,'目标值’替换为您要匹配的值。

请注意,使用REPLACE()函数将字段中的空格去除是为了避免空格干扰匹配。

http://www.lryc.cn/news/154853.html

相关文章:

  • docker基本命令记录
  • web之利用延迟实现复杂动画、animation
  • TCP 和 UDP 的区别、TCP 是如何保证可靠传输的?
  • 鼠标悬停阴影的效果被旁边div挡住的解决办法
  • Go用两个协程交替打印100以内的奇偶数
  • css 文字单行多行超出长度后显示 ...
  • C++将派生类赋值给基类
  • 海外问卷调查是做什么的?
  • Redis——数据结构介绍
  • 附录2-将三国演义按章节存储为不同的txt(bs4)
  • 现代C++中的从头开始深度学习:【6/8】成本函数
  • Vue——vue3中的ref和reactive数据理解以及父子组件之间props传递的数据
  • 新手如何备考PMP考试?
  • FPGA输出lvds信号点亮液晶屏
  • 算法面试-深度学习基础面试题整理(2023.8.29开始,每天下午持续更新....)
  • FireFox禁用HTTP2
  • 搭建HTTPS服务器
  • 无人化在线静电监控系统的组成
  • element ui级联选择器数据处理
  • zookeeper-3.6.4集群搭建
  • 15种下载文件的方法文件下载方法汇总超大文件下载
  • Windows安装配置Rust(附CLion配置与运行)
  • 【ROS】例说mapserver静态地图参数(对照Rviz、Gazebo环境)
  • 【RapidAI】P0 项目总览
  • 初识c++
  • 【面试经典150题】跳跃游戏Ⅱ
  • 20230831-完成登录框的按钮操作,并在登录成功后进行界面跳转
  • 039 - sql逻辑操作符
  • DbLInk使用
  • 2.3 Vector 动态数组(迭代器)