mysql查询由分号或逗号分隔的列是否包含某个值
最近写项目,要查询一个由分号或者逗号分隔存储的列是否包含某个值的,
第一个想到的是使用like,但是like不严谨可能会出现查询的数据并不是你想要的,下面介绍两种方法:
1.使用mysql的 FIND_IN_SET(str,strlist)函数,此函数是根据逗号分隔来查询的,
第一个参数是要查询的字符串,第二个参数是要搜索的逗号分隔的列,此方法只能作用于以逗号分隔的列。
2.使用 locate(CONCAT(str,';'),CONCAT(strlist, ';')) 根据分号查询,第一个参数是要查询的字符串,
使用concat函数拼接分号,第二个函数是要搜索的分号隔开的列
mysql合并多列的值
- 将单条记录中的多个列合并: concat(str1, str2,…) 函数
,该函数返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
若是想要返回以符号分隔的字符串可以使用 concat_ws(separator, str1, str2, …) 函数,该函数第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。 - 将多条记录中的某些字段合并:
语法:group_concat( 要连接的字段 ) [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )
group_concat() 函数,该函数需要有group by 语句。使用group_concat() 方法默认是以“,”进行分割, 如果希望以其他字符进行分割可使用“separator”.
默认:
group_concat(合并列)
加排序:
group_concat(合并列 order by 合并列)
更改默认分隔符:
group_concat(合并列 order by 合并列 separator ‘;’)