mysql 多个字段拼接的实例详解_Mysql

来源:脚本之家  责任编辑:小易  

Mysql的查询结果行字段拼接,可以用下面两个函数实现:

1. concat函数

mysql> select concat('1','2','3') from test ;
+---------------------+
| 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(separator,str1,str2,...) 代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

mysql> select concat_ws(':','1','2','3') from test ;
+----------------------------+
| concat_ws(':','1','2','3') |
+----------------------------+
| 1:2:3 |
+----------------------------+

分隔符为NULL,则返回结果为NULL:

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表这三个表关联了起来

select dv.id as id,
 d.dog_name as dogName,v.vaccine_name 
 from 
 t_dog_vaccine dv
  left join t_dog d on dv.dog_id = d.id
  left join t_vaccine v on dv.vaccine_id = v.id 

这样虽然把狗和疫苗都对应上了,但是每条狗有多条记录,而我只想要一个狗的名字和把多个vaccine_name的值合并成一个字符串这样的数据。在经过思考以后,我突然想到了·group by 。

select dv.id as id,
 d.dog_name as dogName,v.vaccine_name 
 from 
 t_dog_vaccine dv
  left join t_dog d on dv.dog_id = d.id
  left join t_vaccine v on dv.vaccine_id = v.id 
  group by dogName

用了group by 这明显不是我想到的结果啊,dogName虽然只有一个了,但是它对应的疫苗也只有一个了,我想要多个疫苗名,那怎么办呢? 是不是有个函数可以做字符串拼接呢? emmmmm,有了,group_concat。。。

select dv.id as id,
 d.dog_name as dogName,
 group_concat(v.vaccine_name) as dogVaccineName  
 from 
 t_dog_vaccine dv
  left join t_dog d on dv.dog_id = d.id
  left join t_vaccine v on dv.vaccine_id = v.id 
 group by d.dog_name

这下就达到我想的效果啦。

group_concat用法

默认用法

select group_concat(vaccine_name) as dogVaccineName from t_vaccine where id in(select vaccine_id from t_dog_vaccine where dog_id = 1)

group_concat拼接时默认的分隔符是',' ,如果我们想改变这个分隔符可以这样做。

REPLACE(group_concat(vaccine_name),',','这里填写你所想换的分隔符')

比如我想把默认的,换成;

select REPLACE(group_concat(vaccine_name),',',';') as dogVaccineName from t_vaccine where id in(select vaccine_id from t_dog_vaccine where dog_id = 1)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持真格学网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文章:Mysql合并结果接横向拼接字段的实现步骤Mysql 实现字段拼接的三个函数MySQL拼接字符串函数GROUP_CONCAT详解

  • 本文相关:
  • mysql跨库事务xa操作示例
  • centos 6.4源码安装mysql-5.6.28.tar.gz教程
  • mysql 5.7.25 压缩版安装配置方法图文教程
  • mysql两表联合查询的四种情况总结
  • mysql比较运算符正则式匹配regexp的详细使用详解
  • mysql的udf编程之非阻塞超时重传
  • mysql 5.0.96 for windows x86 32位绿色精简版安装教程
  • mysql高效模糊搜索之内置函数locate instr position find_in_set
  • mysql允许远程连接的方法
  • 在win命令提示符下mysql 用户新建、授权、删除,密码修改
  • mysql 如何把两个字段拼接起来
  • mysql 随机拼接多个字段
  • mysql数据库拼接字段,求大神指教
  • mysql怎样把两个字段合并成一个字段输出?
  • mysql(java)一个字段自动为另两个字段拼接的值
  • mysql 如何批量执行拼接后的mysql语句并将结果放到...
  • MySQL的sql语句如何将一列数据拼接成一个字符串?
  • MySQL中如何把两个数据表的不同字段合并作为一个字...
  • mysql如何创建多个实例,求步骤,谢谢,急求
  • mysql多个字段关联查询
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql合并结果接横向拼接字段的实现步骤mysql 实现字段拼接的三个函数mysql拼接字符串函数group_concat详解mysql跨库事务xa操作示例centos 6.4源码安装mysql-5.6.28.tar.gz教程mysql 5.7.25 压缩版安装配置方法图文教程mysql两表联合查询的四种情况总结mysql比较运算符正则式匹配regexp的详细使用详解mysql的udf编程之非阻塞超时重传mysql 5.0.96 for windows x86 32位绿色精简版安装教程mysql高效模糊搜索之内置函数locate instr position find_in_setmysql允许远程连接的方法在win命令提示符下mysql 用户新建、授权、删除,密码修改mysql安装图解 mysql图文安装教程can""""t connect to mysql servwindows下mysql5.6版本安装及配置mysql字符串截取函数substring的mysql创建用户与授权方法mysql提示:the server quit withmysql日期数据类型、时间类型使用mysql——修改root密码的4种方法mysql之timestamp(时间戳)用法mysql update语句的用法详解mysql数据库远程连接开启方法mysql查询正在执行的事务以及等待锁的操作mysql 5.5.x zip直接解压版安装方法mysql遇到load data导入文件数据出现1290安装配置mysqlmtop来监控mysql运行性能的mysql 5.5 range分区增加删除处理的方法示sysbench多线程性能测试工具mysql出现error performing load commandzabbix监控mysql主从状态的方法详解mysql5.x升级到mysql5.7后导入之前数据库
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved