本文主要介绍了几个mysql字段拼接实例的详细讲解,有很好的参考价值,希望对大家有所帮助。来和边肖一起看看吧。
Mysql查询结果行字段拼接可以通过以下两个函数实现:
1. concat函数mysql从测试中选择concat(1 , 2 , 3 );
-
| concat(1 , 2 , 3) |
-
| 123 |
-
如果连接字符串中有NULL,则返回的结果为NULL:
mysql select concat(1 , 2 ,NULL, 3 )from test;
-
| concat(1 , 2 ,NULL, 3) |
-
| NULL |
-
2. concat_ws函数Concat(分隔符,str1,str2,)代表带分隔符的concat,是concat()的一种特殊形式。第一个参数是其他参数的分隔符。分隔符放在要连接的两个字符串之间。分隔符可以是字符串或其他参数。
mysql select concat_ws(:, 1 , 2 , 3 )from test;
-
| concat_ws(:, 1 , 2 , 3) |
-
| 1:2:3 |
-
如果分隔符为空,则返回的结果为空:
mysql select concat_ws(NULL, 1 , 2 , 3 )from test;
-
| concat_ws(NULL, 1 , 2 , 3) |
-
| NULL |
-
如果参数中存在NULL,将被忽略:
mysql select concat_ws(:, 1 , 2 ,NULL,NULL,NULL, 3 )from test;
-
| concat_ws(:, 1 , 2 ,NULL,NULL,NULL, 3) |
-
| 1:2:3 |
-
您可以判断NULL并用其他值替换它:
mysql select concat_ws(:, 1 , 2 ,ifNULL(NULL, 0 ), 3 )from bank limit 1;
-
| concat_ws(:, 1 , 2 ,ifNULL(NULL, 0 ), 3) |
-
| 1:2:0:3 |
-
补充:补充:mysql中分组时将某个字段的值进行拼接
t_dog表
t_vaccine表
t_dog_vaccine表
问题描述
我需要在dog_vaccine中找出每只狗对应的疫苗。因为狗和疫苗是多对多的,一只狗可能对应多个疫苗,但是我想把这些疫苗通过字符串拼接成一个,然后映射到java实体类。
一步步解决
我使用了两个左连接查询来连接三个表:t_dog表、t_vaccine表和t_dog_vaccine表。
选择dv.id作为id,
d .狗名作为狗名,v .疫苗名
从
t _狗_疫苗dv
dv上左连接t _ dog d . dog _ id=d . id
左连接dv上的t _ vaccine v . vaccine _ id=v . id
虽然狗和疫苗是匹配的,但是每只狗都有多条记录,我只想要一只狗的名字和多个vaccine_name值组合成一个字符串的数据。想了想,突然想到了Groupby。
选择dv.id作为id,
d .狗名作为狗名,v .疫苗名
从
t _狗_疫苗dv
dv上左连接t _ dog d . dog _ id=d . id
左连接dv上的t _ vaccine v . vaccine _ id=v . id
按狗名分组
用group by显然不是我想到的结果。虽然只有一个狗名,但是对应的疫苗也只有一种。我想要多个疫苗名称,该怎么办?有没有可以拼接字符串的功能?Emmmmm,知道了,group_concat。
选择dv.id作为id,
d.dog_name作为dogName,
group_concat(v.vaccine_name)作为dogVaccineName
从
t _狗_疫苗dv
dv上左连接t _ dog d . dog _ id=d . id
左连接dv上的t _ vaccine v . vaccine _ id=v . id
按d.dog_name分组
这样才能达到我想要的效果。
group_concat用法默认用法
select group _ concat(vaccine _ name)as dog vaccine name from t _ vaccine where id in(select vaccine _ id from t _ dog _ vaccine where dog _ id=1)
group_concat拼接的默认分隔符是,。如果我们想改变这个分隔符,我们可以这样做。
替换(group _ concat (vaccine _ name),,,在此处填写要更改的分隔符)
比如我想把默认改成;
select REPLACE(group _ concat(vaccine _ name),,,;)作为来自t _ vaccine where id in(select vaccine _ id from t _ dog _ vaccine where dog _ id=1)的dogVaccineName
以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。如有错误或不足之处,请不吝赐教。