MySql逗号拼接字符串查询的两种方法

 更新时间:2019年09月16日 14:16:00   作者:guochanof  
这篇文章主要介绍了MySql逗号拼接字符串查询的两种方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

下面两个函数的使用和FIND_IN_SET一样,使用时只需要把FIND_IN_SET换成FIND_PART_IN_SETFIND_ALL_PART_IN_SET

例如某字段里是为1,2,3,4,5 

使用方法:

第一种,传入1,3,6  可以查出来

select * from XXX where FIND_PART_IN_SET('1,3,6','1,2,3,4,5')

第二种,传入1,3,6  查不出来

select * from XXX where FIND_ALL_PART_IN_SET('1,3,6','1,2,3,4,5')

函数:

第一种:只要包含其中一个就可以被查出来

CREATE DEFINER = `root`@`%` FUNCTION `NewProc`(str1 text,str2 text)
 RETURNS text
BEGIN
 #传入两个逗号分割的字符串,判断第二个字符串是否包含第一个字符串split之后的单个
DECLARE CURRENTINDEX INT;#当前下标
DECLARE CURRENTSTR text;
DECLARE result int;
set result = 0;
set CURRENTINDEX = 0;
set CURRENTSTR = '';
IF str1 IS NOT NULL AND str1 != '' THEN
 SET CURRENTINDEX = LOCATE(',',str1);
 WHILE CURRENTINDEX > 0 DO
 SET CURRENTSTR = substring(str1,1,CURRENTINDEX-1);
 if FIND_IN_SET(CURRENTSTR,str2) THEN
  set result = 1;
 end if;
 SET str1 = substring(str1,CURRENTINDEX+1);
 SET CURRENTINDEX = LOCATE(',',str1);
 END WHILE;
 #只传一个 和 最后无逗号的情况
 IF LENGTH(str1) > 0 THEN
 if FIND_IN_SET(str1,str2) THEN
  set result = 1;
 end if;
 END IF;
END IF;
RETURN result;
END;

第二种:必须全部包含才可以被查出来

CREATE DEFINER = `root`@`%` FUNCTION `NewProc`(str1 text,str2 text)
 RETURNS text
BEGIN
 #传入两个逗号分割的字符串,判断第二个字符串是否全部包含第一个字符串split之后的单个
DECLARE CURRENTINDEX INT;#当前下标
DECLARE CURRENTSTR text;
DECLARE RESULT int;
DECLARE TOTALCOUNT int;
DECLARE TRUECOUNT int;
set RESULT = 0;
set CURRENTINDEX = 0;
set CURRENTSTR = '';
set TOTALCOUNT = 0;
set TRUECOUNT = 0;
IF str1 IS NOT NULL AND str1 != '' THEN
 SET CURRENTINDEX = LOCATE(',',str1);
 WHILE CURRENTINDEX > 0 DO
 SET TOTALCOUNT = TOTALCOUNT + 1;
 SET CURRENTSTR = substring(str1,1,CURRENTINDEX-1);
 if FIND_IN_SET(CURRENTSTR,str2) THEN
  SET TRUECOUNT = TRUECOUNT + 1;
 end if;
 SET str1 = substring(str1,CURRENTINDEX+1);
 SET CURRENTINDEX = LOCATE(',',str1);
 END WHILE;
 #只传一个 和 最后无逗号的情况
 IF LENGTH(str1) > 0 THEN
 SET TOTALCOUNT = TOTALCOUNT + 1;
 if FIND_IN_SET(str1,str2) THEN
  SET TRUECOUNT = TRUECOUNT + 1;
 end if;
 END IF;
END IF;
IF TOTALCOUNT > 0 AND TRUECOUNT = TOTALCOUNT THEN 
 SET RESULT = 1;
END IF;
RETURN result;
END;

总结

以上所述是小编给大家介绍的MySql逗号拼接字符串查询的两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • MySQL5.5.21安装配置教程(win7)

    MySQL5.5.21安装配置教程(win7)

    这篇文章主要以图文结合的方式介绍了Win7系统下安装MySQL5.5.21的具体过程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Mysql两表联合查询的四种情况总结

    Mysql两表联合查询的四种情况总结

    今天小编就为大家分享一篇关于Mysql两表联合查询的四种情况总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • Linux mysql命令安装允许远程连接的安装设置方法

    Linux mysql命令安装允许远程连接的安装设置方法

    对大家推荐很好使用的Linux mysql系统,像让大家对Linux mysql系统有所了解,然后对Linux mysql系统全面讲解介绍,希望对大家有用今天特意配置了mysql apache php ,虽然网上很多这方面的例子,但是很多是作者再回忆写的,所以难免有笔误的地方。
    2010-08-08
  • MySQL查询语句大全集锦

    MySQL查询语句大全集锦

    这篇文章主要介绍了MySQL查询语句大全集锦,需要的朋友可以参考下
    2016-06-06
  • mysql免安装版配置与修改密码的教程

    mysql免安装版配置与修改密码的教程

    这篇文章主要介绍了mysql免安装版配置与修改密码的教程详解,需要的朋友可以参考下
    2018-02-02
  • MySQL数据库自连接实例讲解

    MySQL数据库自连接实例讲解

    针对相同的表进行的连接被称为"自连接"(self join),下面这篇文章主要给大家介绍了关于MySQL数据库自连接实例讲解的相关资料,文中通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • MySQL无GROUP BY直接HAVING返回空的问题分析

    MySQL无GROUP BY直接HAVING返回空的问题分析

    这篇文章主要介绍了MySQL无GROUP BY直接HAVING返回空的问题分析,学习MYSQL需要注意这个问题
    2013-11-11
  • MySQL笔记之函数查询的使用

    MySQL笔记之函数查询的使用

    本篇文章介绍了mysql中函数查询的使用。需要的朋友参考下
    2013-05-05
  • MySQL中复合索引和覆盖索引的区别详解

    MySQL中复合索引和覆盖索引的区别详解

    这篇文章主要介绍了MySQL中复合索引和覆盖索引的区别详解,复合索引是一种索引,它包含多个字段,复合索引能够使一个SQL查询多个条件时也能走索引,提高查询性能,需要的朋友可以参考下
    2023-11-11
  • MySQL为什么要避免大事务以及大事务解决的方法

    MySQL为什么要避免大事务以及大事务解决的方法

    这篇文章主要介绍了MySQL为什么要避免大事务以及大事务解决的方法,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08

最新评论