mysql 多个字段拼接的实例详解图,mysql 多个字段拼接的实例详解是什么

mysql 多个字段拼接的实例详解图,mysql 多个字段拼接的实例详解是什么,mysql 多个字段拼接的实例详解

本文主要介绍了几个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

以上个人经历,希望能给大家一个参考,也希望大家多多支持我们。如有错误或不足之处,请不吝赐教。

mysql 多个字段拼接的实例详解图,mysql 多个字段拼接的实例详解是什么