怎么在MySql中使用逗号拼接字符串
怎么在MySql中使用逗号拼接字符串?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
例如某字段里是为1,2,3,4,5
使用方法:
第一种,传入1,3,6 可以查出来
select*fromXXXwhereFIND_PART_IN_SET('1,3,6','1,2,3,4,5')
第二种,传入1,3,6 查不出来
select*fromXXXwhereFIND_ALL_PART_IN_SET('1,3,6','1,2,3,4,5')
函数:
第一种:只要包含其中一个就可以被查出来
CREATEDEFINER=`root`@`%`FUNCTION`NewProc`(str1text,str2text)RETURNStextBEGIN#传入两个逗号分割的字符串,判断第二个字符串是否包含第一个字符串split之后的单个DECLARECURRENTINDEXINT;#当前下标DECLARECURRENTSTRtext;DECLAREresultint;setresult=0;setCURRENTINDEX=0;setCURRENTSTR='';IFstr1ISNOTNULLANDstr1!=''THENSETCURRENTINDEX=LOCATE(',',str1);WHILECURRENTINDEX>0DOSETCURRENTSTR=substring(str1,1,CURRENTINDEX-1);ifFIND_IN_SET(CURRENTSTR,str2)THENsetresult=1;endif;SETstr1=substring(str1,CURRENTINDEX+1);SETCURRENTINDEX=LOCATE(',',str1);ENDWHILE;#只传一个和最后无逗号的情况IFLENGTH(str1)>0THENifFIND_IN_SET(str1,str2)THENsetresult=1;endif;ENDIF;ENDIF;RETURNresult;END;
第二种:必须全部包含才可以被查出来
CREATEDEFINER=`root`@`%`FUNCTION`NewProc`(str1text,str2text)RETURNStextBEGIN#传入两个逗号分割的字符串,判断第二个字符串是否全部包含第一个字符串split之后的单个DECLARECURRENTINDEXINT;#当前下标DECLARECURRENTSTRtext;DECLARERESULTint;DECLARETOTALCOUNTint;DECLARETRUECOUNTint;setRESULT=0;setCURRENTINDEX=0;setCURRENTSTR='';setTOTALCOUNT=0;setTRUECOUNT=0;IFstr1ISNOTNULLANDstr1!=''THENSETCURRENTINDEX=LOCATE(',',str1);WHILECURRENTINDEX>0DOSETTOTALCOUNT=TOTALCOUNT+1;SETCURRENTSTR=substring(str1,1,CURRENTINDEX-1);ifFIND_IN_SET(CURRENTSTR,str2)THENSETTRUECOUNT=TRUECOUNT+1;endif;SETstr1=substring(str1,CURRENTINDEX+1);SETCURRENTINDEX=LOCATE(',',str1);ENDWHILE;#只传一个和最后无逗号的情况IFLENGTH(str1)>0THENSETTOTALCOUNT=TOTALCOUNT+1;ifFIND_IN_SET(str1,str2)THENSETTRUECOUNT=TRUECOUNT+1;endif;ENDIF;ENDIF;IFTOTALCOUNT>0ANDTRUECOUNT=TOTALCOUNTTHENSETRESULT=1;ENDIF;RETURNresult;END;
关于怎么在MySql中使用逗号拼接字符串问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。