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

2022-05-22 0 794

问题描述:

结构:

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

drop table test; 
create table test ( col1 varchar(100),col2 varchar(100)); 
insert test select 
'26,59,6', '1502.5,1690,2276.77' union all select 
'59,33,6', '3502.1,1020,2276.77' union all select 
'22,8,59', '1332.6,2900,1520.77'; 
select col1,col2 
from (select *,find_in_set('59',col1) as rn from test) k 
where substring_index(concat(',',substring_index(col2,',',rn)),',',-1) 
 <'2000'; 

+———+———————+

| col1    | col2                |

+———+———————+

| 26,59,6 | 1502.5,1690,2276.77 |

| 22,8,59 | 1332.6,2900,1520.77 |

+———+———————+

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MySql MYSQL 一个巧用字符函数做数据筛选的题 https://www.niceym.com/52936.html