工作随笔——壹(关于MYSQL数据库中字符串与字符串匹配问题)
2016-08-30 12:14
337 查看
问题描述:
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。
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。
相关文章推荐
- 工作随笔——贰(关于字符串非空判断与数据库中日期时间问题)
- 关于单个字符怎么转换成字符串的问题
- 工作中遇到的关于C#字符串处理小问题。《记录经验》
- 用java写关于删除一个字符串的字符以及删除一个字符串与另一个字符串中相同字符的问题
- 关于memcpy拷贝结构体、结构体数组到字符数组(字符串)的问题
- 算法实现字符串匹配问题:从三个字符串中找出共有的最长部分。
- HDU 3746 字符串匹配(字符串的最小循环节问题)
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 字符串转换成整数&带通配符的字符串匹配问题
- java实现字符串匹配问题之求两个字符串的最大公共子串
- 浅谈关于字符串中求字符频率问题
- 关于向mysql数据库中插入带单引号字符串的问题
- 关于删除字符串中重复字符问题?解析
- 关于memcpy拷贝结构体、结构体数组到字符数组(字符串)的问题
- 关于字符串中取相同的字符问题(小学题)
- 字符串转换成整数,字符串匹配问题
- 关于新手用java写题目,遇到的字符和字符串问题
- 关于字符串,字符数组 ,局部和全局地址分配问题
- 关于XML字符串中出现非法字符导致解析出错的问题
- 一个关于取字符串中数字和字符的逻辑问题