mysql字符串拼接的4种方式总结
作者:奇怪的大象 发布时间:2024-01-28 21:54:42
前言
总是记不住字符串拼接,每次都要百度去搜索,所以在这里记录一下,好方便后续的查找,如有错误和问题可以提出,谢谢。
字符串拼接分为几种方式,在这里会一一举例写出:
第一种:
mysql自带语法CONCAT(string1,string2,…),此处是直接把string1和string2等等的字符串拼接起来(无缝拼接哦)
说明:此方法在拼接的时候如果有一个值为NULL,则返回NULL
如:
1.SELECT CONCAT(“name=”,“lich”,NULL) AS test;
2.SELECT CONCAT(“name=”,“lich”) AS test;
第二种:
第二种也是mysql自带语法CONCAT_WS(separator,string1,string2,…),但是可以多个字符串用指定的字符串进行拼接(带缝拼接哦)
说明:string1,string2代表的是字符串,而separator代表的是连接其他参数的分隔符,可以是符号,也可以是字符串。如果分隔符为NULL,则结果为NULL。此方法参数可以为NULL。
如:
1.select concat_ws(‘#’,‘name=’,‘lich’,null) AS test;
2.select concat_ws(NULL,‘name=’,‘lich’,null) AS test;
3.select concat_ws(“hello,”,‘name=’,‘lich’,null) AS test;
第三种:
也是mysql的自带语法GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
如:
1.SELECT id,GROUP_CONCAT(type) FROM log_sys_interview GROUP BY type ;
2.SELECT id,GROUP_CONCAT(type Separator ‘#’) FROM log_sys_interview GROUP BY type ;
3.SELECT id,GROUP_CONCAT(type ORDER BY type DESC) FROM log_sys_interview GROUP BY ip ;
4.SELECT id,GROUP_CONCAT(DISTINCT type ORDER BY type DESC) FROM log_sys_interview GROUP BY ip ;
第四种(运算,只对数字有效):
这种方式比较简单
原始的:
SELECT id,type FROM log_sys_interview ;
SELECT id,type+99 FROM log_sys_interview ;
附:MySQL group_concat()详解
GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
对应的语法格式
# 将分组中column1这一列对应的多行的值按照column2 升序或者降序进行连接,其中分隔符为seq
# 如果用到了DISTINCT,将表示将不重复的column1按照column2升序或者降序连接
# 如果没有指定SEPARATOR的话,也就是说没有写,那么就会默认以 ','分隔
GROUP_CONCAT([DISTINCT] column1 [ORDER BY column2 ASC\DESC] [SEPARATOR seq]);
[ ORDER BY column2 ASC\DESC] :表示将会根据column2升序或者降序连接.其中column2不一定一定要求是column1,只要保证column2在这个分组中即可.如果没有写ORDER BY句段,那么连接是没有顺序的。
[ SEPARATOR seq] : 表示各个column1将会以什么分隔符进行分隔,例如SEPARATOR '’,则表示column1将会以进行分隔。如果没有指定seq的时候,也即没有写SEPARATOR seq这个句段,那么就会默认是以,分隔的。
CONCAT函数中要连接的数据含有NULL,最后返回的是NULL,但是GROUP_CONCAT不会这样,他会忽略NULL值。
mysql> SELECT * FROM employee2;
+----+-----------+------+---------+---------+
| id | name | age | salary | dept_id |
+----+-----------+------+---------+---------+
| 3 | 小肖 | 29 | 30000.0 | 1 |
| 4 | 小东 | 30 | 40000.0 | 2 |
| 6 | 小非 | 24 | 23456.0 | 3 |
| 7 | 晓飞 | 30 | 15000.0 | 4 |
| 8 | 小林 | 23 | 24000.0 | NULL |
| 10 | 小五 | 20 | 4500.0 | NULL |
| 11 | 张山 | 24 | 40000.0 | 1 |
| 12 | 小肖 | 28 | 35000.0 | 2 |
| 13 | 李四 | 23 | 50000.0 | 1 |
| 17 | 王武 | 24 | 56000.0 | 2 |
| 18 | 猪小屁 | 2 | 56000.0 | 2 |
| 19 | 小玉 | 25 | 58000.0 | 1 |
| 21 | 小张 | 23 | 50000.0 | 1 |
| 22 | 小胡 | 25 | 25000.0 | 2 |
| 96 | 小肖 | 19 | 35000.0 | 1 |
| 97 | 小林 | 20 | 20000.0 | 2 |
+----+-----------+------+---------+---------+
16 rows in set (0.16 sec)
mysql> SELECT
-> dept_id,
-> GROUP_CONCAT(name ORDER BY age DESC SEPARATOR '*') -- 分组中的name中的多行数据将按照age降序进行连接,分隔符为 *
-> FROM employee2
-> GROUP BY dept_id; -- 注意如果这里没有GROUP BY dept_id,那么就会因为输出dept_id而发生报错
+---------+----------------------------------------------------+
| dept_id | GROUP_CONCAT(name ORDER BY age DESC SEPARATOR '*') |
+---------+----------------------------------------------------+
| NULL | 小林*小五 |
| 1 | 小肖*小玉*张山*小张*李四*小肖 |
| 2 | 小东*小肖*小胡*王武*小林*猪小屁 |
| 3 | 小非 |
| 4 | 晓飞 |
+---------+----------------------------------------------------+
mysql> SELECT
-> GROUP_CONCAT(name SEPARATOR '*')
-> FROM employee2; -- 这时候虽然没有使用GROUP BY,但是可以正常运行,此时是将所有的name连接,连接时为无序,分隔符为*
+-------------------------------------------------------------------------------------------------------+
| GROUP_CONCAT(name SEPARATOR '*') |
+--------------------------------------------------------------------------------------------------------
| 小肖*小东*小非*晓飞*小林*小五*张山*小肖*李四*王武*猪小屁*小玉*小张*小胡*小肖*小林 |
+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT
-> GROUP_CONCAT(DISTINCT name SEPARATOR '*') -- 将不同的name进行连接
-> FROM employee2;
+-----------------------------------------------------------------------------------------------+
| GROUP_CONCAT(DISTINCT name SEPARATOR '*') |
+-----------------------------------------------------------------------------------------------+
| 小东*小五*小张*小林*小玉*小肖*小胡*小非*张山*晓飞*李四*猪小屁*王武 |
+-----------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT
-> dept_id,
-> GROUP_CONCAT(name) AS employees
-> FROM employee2
-> GROUP BY dept_id; -- 输出每个部门的员工,每个员工之间用逗号分隔,因为没有写SEPARATOR ,所以就默认以逗号分隔
+---------+----------------------------------------------+
| dept_id | employees |
+---------+----------------------------------------------+
| NULL | 小林,小五 |
| 1 | 小肖,张山,李四,小玉,小张,小肖 |
| 2 | 小东,小肖,王武,猪小屁,小胡,小林 |
| 3 | 小非 |
| 4 | 晓飞 |
+---------+----------------------------------------------+
5 rows in set (0.00 sec)
mysql> SELECT
-> dept_id,
-> GROUP_CONCAT(DISTINCT name) -- 将不同的name连接,并且用逗号分隔
-> AS employees
-> FROM employee2
-> GROUP BY dept_id;
+---------+----------------------------------------------+
| dept_id | employees |
+---------+----------------------------------------------+
| NULL | 小五,小林 |
| 1 | 小张,小玉,小肖,张山,李四 |
| 2 | 小东,小林,小肖,小胡,猪小屁,王武 |
| 3 | 小非 |
| 4 | 晓飞 |
+---------+----------------------------------------------+
5 rows in set (0.00 sec)
总结
来源:https://blog.csdn.net/m0_67391120/article/details/126469952
猜你喜欢
- “MySQL是一个功能齐全的关系数据库管理系统(RDBMS),可以与Oracle DB和Microsoft的SQL Server竞争。MyS
- 前言Modbus协议是由Modicon公司(现在的施耐德电气Schneider Electric)推出,主要建立在物理串口、以太网TCP/I
- SQL Server 2008 master数据库损坏后,SQL SERVER服务启动失败,查看错误日志,你会看到下面错误信息:2015-1
- 前言本文做的是基于三层神经网络实现手写数字分类,神经网络设计是设计复杂深度学习算法应用的基础,本文将介绍如何设计一个三层神经网络模型来实现手
- 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。1. Map 函数map函数可以使用另外一个函
- 我们前期开发了一个只有公司客服人员才能使用的系统——有限的几个客服人员。就是这有限的几个客服人员前几天突然就提出这样的问题:我们每隔很短一段
- # 贪婪模式 默认的匹配规则# 在满足条件的情况下 尽可能多的去匹配到字符串import rers = re.match('\d{6
- 半透明效果有时候会给页面增加不少色彩,特别是Vista盛行之后,半透明效果更加受推崇。在诸多可用于Web浏览的图片格式中,只有PNG格式和G
- 即使你没听说过“ * 六度分隔理论”,也很可能听过“凯文 • 贝肯 (Kevin Bacon)的六度分隔值游戏”。在这两个游戏中,目标都是
- 内容摘要:图片切换效果在网页制作中经常被使用,好的切换效果不仅增加了网站的实用行也提升了网站的趣味性。而图片切换方法有的使用flash来实现
- 一、前言随着三胎政策的开放,人们对于生娃的讨论也逐渐热烈了起来,经常能够在各大社交媒体当中看到相关的话题,而随着时间慢慢地流逝,中国的首批“
- 一、引言有一定 Python 编程经验的人估计十有八九使用过异常,异常对于程序的健壮性是毋庸置疑的。二、使用异常对数据进行初始化在某些条件下
- CSS Sprites 简介:通常被意译为“CSS图像拼合”或“CSS贴图定位”。CSS Sprites并不是一门新技术,目前它已经在网页开
- 代码如下:Create trigger tri_wk_CSVHead_History on wk_CSVHead_History --声明
- 实现步骤:图像灰度化边缘检测根据Canny检测得出来的Mat寻找轮廓算出最大轮廓周长or面积根据获取到的最大轮廓下标进行轮廓绘制画出最大矩形
- Python这些年风头一直很盛,占据了很多领域的位置,Web、大数据、人工智能、运维均有它的身影,甚至图形界面做的也很顺,乃至full-st
- 前言本文介绍的是DDCTF第五题,绕过未知字段名的技巧,这里拿本机来操作了下,思路很棒也很清晰,分享给大家,下面来看看详细的介绍:实现思路题
- 最近在做文章页盖楼显示的项目,数据来源是跟贴系统生成的UTF8格式的JSON数据。文章页的HTML编码格式是GB2312,在javascri
- 直接给出例子说明:cs = conn.cursor()img_ids = [1,2,3]sql = "select img_url
- Python可以使用 xml.etree.ElementTree 模块从简单的XML文档中提取数据。 为了演示,假设你想解析Planet P