mysql字符串拆分/替换

news/2024/10/30 9:33:41/

最近写了一个东西有要求一个值需要筛选两个条件,其中一个条件的栏位值在数据库中形式不固定,有单个的,有复合的
(类似有的是a, b, c…有的是a/b, c/d, a/c/d)但是其筛选条件集合是这样的(a, b, c, d……)。
所以要对复合值另外处理,我的想法是以 / 为分隔符将复合值分开再进行筛选。

分享我的sql:

def L2proNum(departs_str):sql4 = "select count(uaer_no) from table_a where " \"depart in ('" + departs_str + "') and name like '%二次元%'"data4 = querySql(sql4)for r in data4:L2ProjectNum = r[0]# 将depart栏位中所有复合值挑出来sql = "select depart from table_a where depart like '%/%' and name like '%二次元%'"data = querySql(sql)cooperateDeparts = [r[0] for r in data]# 以‘/’为标记将这些复合值分离为单个的,并筛选其是否符合条件( num in ('" + departs_str + "') )for cooperateDepart in cooperateDeparts:sql = "select num from(SELECT SUBSTRING_INDEX(" \"SUBSTRING_INDEX('" + cooperateDepart + "','/',help_topic_id+1),'/',-1) " \"AS num FROM mysql.help_topic WHERE help_topic_id < " \"LENGTH('" + cooperateDepart + "')-LENGTH(REPLACE('" + cooperateDepart + "','/',''))+1)as q " \"where num in ('" + departs_str + "')"data = queryMysql(sql)projectDeparts = [r[0] for r in data]#只要projectDeparts不为空,就是有值符合条件,不论是多少个值符合条件,只算一个L2Projectif projectDeparts:L2ProjectNum = L2ProjectNum + 1return L2ProjectNum

那段以 / 为分隔符将复合值分离的sql我理解了半天:

"select num from(SELECT SUBSTRING_INDEX(" \
"SUBSTRING_INDEX('" + cooperateDepart + "','/',help_topic_id+1),'/',-1) " \
"AS num FROM mysql.help_topic WHERE help_topic_id < " \
"LENGTH('" + cooperateDepart + "')-LENGTH(REPLACE('" + cooperateDepart + "','/',''))+1)as q " 

大体就是
SUBSTRING_INDEX(‘" + cooperateDepart + "’,‘/’,help_topic_id+1) 把 ‘a, b, c, d’ 这个字符串正着截取为
‘a’
‘a,b’
‘a,b,c’
‘a, b, c, d’

SUBSTRING_INDEX(" “SUBSTRING_INDEX('” + cooperateDepart + "‘,’/‘,help_topic_id+1),’/',-1) 又挨个儿截取了上面那些字符串的倒数第一个就成了:
‘a’
‘b’
‘c’
‘d’

REPLACE(‘" + cooperateDepart + "’,‘/’,‘’) 将字符串中的 ‘/’ 替换为空

LENGTH(‘" + cooperateDepart + "’)-LENGTH(REPLACE(‘" + cooperateDepart + "’,‘/’,‘’))+1) 这句就是help_topic_id循环的次数('/'在字符串中出现的次数 + 1 = 最终要分割为几个字符串)

具体解释,点这里跳转


http://www.ppmy.cn/news/307073.html

相关文章

vue echarts内部this指向问题

今天遇到一个很讨人厌的问题&#xff0c; this.tChartInstance echarts.init(document.getElementById(‘ChartDom’), null, { width: 700, height: 500 }); 一直报Uncaught TypeError: Cannot read property ‘getAttribute’ of null错 然后发现console.log(‘dom’,docume…

名帖39 席夔 隶书《千字文》

《中国书法名帖目录》 【释文】 天地玄黄 宇宙洪荒 日月盈昃 辰宿列张 寒来暑往 秋收冬藏 闰余成岁 律吕调阳 云腾致雨 露结为霜 金生丽水 玉出昆冈 剑号巨阙 珠称夜光 果珍李柰 菜重芥姜 海咸河淡 鳞潜羽翔 龙师火帝 鸟官人皇 始制文字 乃服衣裳 推位让国 有虞陶唐 吊民…

名帖209 赵孟頫 行书《千字文》

《中国书法名帖目录》 赵孟頫《行书千字文》&#xff0c;绢本&#xff0c;纵26.5cm*横373.4cm&#xff0c;现藏于故宫博物院。引首系明代徐霖篆书“松雪千文”四个大字&#xff0c;卷后有元从张雨、赵雍、赵奕、黄公望&#xff0c;明代莫云卿、张湘詹景凤、徐霖等众人跋文。 …

名帖254 文徵明 行书《独乐园记、独乐园七咏、独乐园诗》

《中国书法名帖目录》 两个版本都很精彩。 版本一&#xff1a;独乐园记 独乐园七咏 东坡独乐园诗 文徵明行书长卷《独乐园记》&#xff0c;书于明嘉靖戊午闰七月既望&#xff0c;时文徵明89岁&#xff0c;纸本墨笔&#xff0c;台北故宫博物院藏。 此幅以王蒙笔法画司马光…

名帖347 怀素 草书《大草千字文》

《中国书法名帖目录》 怀素&#xff08;725-785&#xff09;&#xff0c;唐代书法家&#xff0c;字藏真&#xff0c;俗姓钱&#xff0c;湖南零陵&#xff08;湖南零陵&#xff09;人。他的草书称作“狂草”&#xff0c;在书法史上领一代风骚&#xff0c;与唐代另一草书家张旭齐…

画论29 刘道醇《宋朝名画评》

【中国历代画论目录】 目录 序 卷一 人物门第一 卷二 山水林木门第二 畜兽门第三 卷三 花竹翎毛门第四 鬼神门第五 屋木门第六 序 夫识画之诀&#xff0c;在乎明六要而审六长也。所谓六要者&#xff0c;气韵兼力一也&#xff0c;格制俱老二也&#xff0c;变异合理三…

SpringMVC框架中@Controller类的方法的返回值的详细介绍

目录 前言 1. 返回值类型为ModelAndView 2. 返回值为String(视图) 3. 返回值为void 4. 返回值为Object 5. 返回值为List<> 6. 返回值为String(数据) 前言 在SpringMVC框架中&#xff0c;我们最常见的就是Controller注解&#xff0c;可以说是只要见到了Controll…

名帖349 孙过庭 草书《千字文》

《中国书法名帖目录》 孙过庭&#xff0c;是我国唐朝时著名书法大家&#xff0c;书学理论家。其好古博雅&#xff0c;天赋异禀&#xff0c;书法始化于“二王”&#xff0c;并深得精髓&#xff0c;临摹古帖小字足以迷乱羲、献&#xff0c;几近以假乱真。 《千字文》是其38岁时…