求mysql数组查询语句

求mysql 数组查询语句      

查询任意姓名关联记录

维修人:   姓名1,姓名2,姓名3,姓名4

搜狗截图20210630233315.png

    SELECT

        *                

    FROM

        fault                

    where

        1=1 

${if(len(维修人) == 0,"","and 维修人 in ('" + 维修人 + "')")}

FineReport 博哥 发布于 2021-6-30 20:16 (编辑于 2021-6-30 23:33)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共6回答
最佳回答
0
shirokoLv6资深互助
发布于2021-7-1 09:49

 SELECT

        *                

    FROM

        fault                

    where

        1=1 

${if(len(维修人) == 0,"","and concat(',',维修人,',') like '%," + 维修人 + ",%'")}

最佳回答
0
指间沙Lv6中级互助
发布于2021-6-30 22:39

${if(len(chengshi) == 0,"","and so1.id in ('" + chengshi + "')")}

  • 博哥 博哥(提问者) 这个查不到数组 字段名:维修人 字段: 姓名1,姓名2,姓名3,姓名4
    2021-06-30 23:25 
  • 指间沙 指间沙 回复 博哥(提问者) 你是要查姓名1,姓名2,姓名3这三个等于维修人的都查出来??
    2021-07-01 07:14 
最佳回答
0
ooshanghaiLv5初级互助
发布于2021-7-1 00:16(编辑于 2021-7-1 00:16)

猜测你的意图,

a/输入姓名1那么结果要求包含姓名1的所有记录列出来,不管姓名1排在第几个逗号

b/输入姓名1,姓名2,那么结果要求包含姓名1,姓名2的所有记录列出来,不管姓名1,姓名2的位置先后

两种思路:

1,instr(str,substr) > 0即substr这里是指a/中姓名1或者b/中姓名1或者/b中姓名2(也就是说如果输入多个,需要用if函数去做多个判断)),这种方法可以完全实现上述两种方案

2,FIND_IN_SET(str,strlist):strlist是由','分隔的字符串,若str不在strlist或者strlist为空字符串,则返回0;若任意一个参数为NULL则返回NULL

第二种方法,需要你去验证一下上面标红的部分

现在mysql中把脚本写好,函数测试好,转FR格式

  • 博哥 博哥(提问者) 根据上图的数据,根据姓名1 姓名2== 查出包含姓名的数据
    2021-07-01 06:21 
  • ooshanghai ooshanghai 回复 博哥(提问者) find_in_set()
    2021-07-01 14:41 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2021-7-1 08:56

https://blog.csdn.net/qingdatiankong/article/details/89673714?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control

 先对数据表中维修人进行列转行得出A,再从A中用SELECT * FROM A WHERE ${if(len(维修人) == 0,"","and 维修人 in ('" + 维修人 + "')")}找出类似上述链接示例中的ID字段B,然后再通过B找出数据 SELECT * FROM fault WHERE ID IN (b)

最佳回答
0
liu.yangLv2初级互助
发布于2021-7-1 09:09(编辑于 2021-7-1 09:52)

${if(len(维修人参数) == 0,"","and 维修人 like ('%"+SUBSTITUTE(维修人参数,",","%")+"%')")}

最佳回答
0
AmyQLv6初级互助
发布于2021-7-1 10:03

${if(len(维修人) == 0,"","and 维修人 like '%" + 维修人 + "%'")}

  • 6关注人数
  • 809浏览人数
  • 最后回答于:2021-7-1 10:03
    请选择关闭问题的原因
    确定 取消
    返回顶部