• 售前

  • 售后

热门帖子
入门百科

MYSQL 一个巧用字符函数做数据筛选的题

[复制链接]
fck1956272 显示全部楼层 发表于 2021-10-25 18:56:14 |阅读模式 打印 上一主题 下一主题
问题描述:
布局:
test 有两个字段,
分别是col1和col2,都是字符字段,
里面的内容都是用,号分隔的三个数字,并且是逐一对应的,
好比col1内容是:26,59,6
col2内容是:1502.5,1690,2276.77
逐一对应就是26的值是1502.5,59是1690,6对应2276.77

搜索条件:
选择一个id,好比选择59,再输入一个数字,好比:2000
然后就是搜索col1中存在id=59的记载,然后搜索col2小于2000,即1690<2000
举例:
如有以下三条记载,搜索id为59,值小于2000的记载:
26,59,6 | 1502.5,1690,2276.77
59,33,6 | 3502.1,1020,2276.77
22,8,59 | 1332.6,2900,1520.77
搜索到这三个记载存在id为59,之后判断第二个搜索条件应为(即用对应id位置的数字对比):
1690<2000
3502.1>2000
1520.77<2000
  1. drop table test;
  2. create table test ( col1 varchar(100),col2 varchar(100));
  3. insert test select
  4. '26,59,6', '1502.5,1690,2276.77' union all select
  5. '59,33,6', '3502.1,1020,2276.77' union all select
  6. '22,8,59', '1332.6,2900,1520.77';
  7. select col1,col2
  8. from (select *,find_in_set('59',col1) as rn from test) k
  9. where substring_index(concat(',',substring_index(col2,',',rn)),',',-1)
  10. <'2000';
复制代码
+---------+---------------------+

| col1    | col2                |
+---------+---------------------+
| 26,59,6 | 1502.5,1690,2276.77 |
| 22,8,59 | 1332.6,2900,1520.77 |
+---------+---------------------+

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作