关闭

工作随笔——壹(关于MYSQL数据库中字符串与字符串匹配问题)

标签: mysql数据库工作字符串匹配
342人阅读 评论(0) 收藏 举报
分类:

问题描述:

MYSQL数据库储存中采用A,B,C,D.....字符串形式储存(I),前台返回值形式为字符串B,D,...(II),要求二者进行匹配,返回的List要求满足条件:II中每个逗号中间的值与I中匹配,存在即以此为条件进行查询。


问题难点:

1、不能在服务端将II拆分,拆分必须在MYSQL层面进行,而在MYSQL中将字符串拆分并转化为or row like B or row like D所需代码量太大。

2、II中的元素量无法提前预知,且有可能非常大,按照常规办法很有可能形成 or row like X*1000的情况,对系统运行不利。


尝试办法:

1、循环拆分II,挨个进行匹配,符合条件后再进行SELECT动作加入新表。(无法在mybatis文件中写入,且代码量太大,对系统压力太大)

2、服务端进行拆分,然后循环查询,将新的结果加入到List,使用List.addAll方法。(此方法成功,但是由于此次网站框架限制,不能在服务端对II进行拆分,故放弃)

3、SELECT * FROM TABLE1 WHERE row like '%B%D%',可以查询出一部分要求内容,但此语句对I中含有D,...B....之类的无效。


解决办法:

采用正则表达式。

SELECT * FROM TABLE1 WHERE row REGEXP B|D

仅需要将II中的逗号改为“|”即可。


附正则表达式“|”的意义:

de|abc ————————匹配de或abc。



0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:613次
    • 积分:36
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档