Mysql 实现字段拼接的三个函数_Mysql

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

方法/步骤  来首先,计算源字符串的销塌举字符数bai,可以用char_length()函数,代码如下:du  zhiselect'zhangsan',char_length('zhangsan');  如下图所示:  字dao符串中的length()函数,用来计算字符串的长度,代码如下:  select'zhangsan',length('zhangsan1111');  如下图所示:  字符串函数中有时需要将几个不同的字符串拼接在一起,这时可以利用concat(a1,a2,...)和concat_ws(b,b1,b2,...),可以亏碧将各字符串合并成一个字符串,代码如下: 衫丛 selectconcat('zhang','san','feng');  selectconcat_ws('*','zhang','san','feng');  如下图所示:,代码如下来:SELECTSUBSTRING_INDEX(SUBSTRING_INDEX(commentid,'-',1),'_',-1)FROMcheckWHEREcommentid='content_13-11220-1'这样就可以少执行一次自函数了,当2113我们运行的数据拿型凳消旅足够5261多,那么速度也就4102显示的1653很明显了租厅www.zgxue.com防采集请勿采集本网。

给运营导出数据时,难免需要对字段进行拼接,如果 Mysql 可以完成的话,就可以少些很多代码。 concat() concat_ws() group_concat()

代码如下: SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(commentid, '-', 1), '_',-1) FROM check WHERE commentid = 'content_13-11220-1' 这样就可以少执行一次函数了,当我们运行的数据足够多,那么速度也就显示的很明显了。

如果其中一个为空值,那么最终合并起来还是空值,碰到空值可以这样处理 select concat(A,ifnull(b,'')) from table

Mysql 确实有几个函数可以对字段进行拼接。

这个可以使用mysql的concat 函数来完成字符串连接的处理。 使用 CAST 函数完成 数字到字符串的类型转换 mysql> SELECT CONCAT ( CAST(1 as char) , '2') AS test;+------+| test |+------+| 12 |+------+1 row in set (0.00 sec)

concat()

GROUP_CONCAT(expr)完整句法如下: GROUP_CONCAT([DISTINCT] expr [,expr ][ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ]][SEPARATOR str_val])这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结

将多个字段使用空字符串拼接为一个字段

试试下面这样行不 concat("2015","-","05","-","07"," ","12",":","00",":","00")

mysql> select concat(id, type) from mm_content limit 10;+------------------+| concat(id, type) |+------------------+| 100818image || 100824image || 100825video || 100826video || 100827video || 100828video || 100829video || 100830video || 100831video || 100832video |+------------------+10 rows in set (0.00 sec)

不过如果有字段值为 NULL,则结果为 NULL。

mysql> select concat(id, type, tags) from mm_content limit 10;+------------------------+| concat(id, type, tags) |+------------------------+| NULL || NULL || NULL || NULL || NULL || NULL || NULL || NULL || NULL || NULL |+------------------------+10 rows in set (0.00 sec)

concat_ws()

上面这种方式如果想要使用分隔符分割,就需要每个字段中间插一个字符串,非常麻烦。

concat_ws() 可以一次性的解决分隔符的问题,并且不会因为某个值为 NUll,而全部为 NUll。

mysql> select concat_ws(' ', id, type, tags) from mm_content limit 10;+--------------------------------+| concat_ws(' ', id, type, tags) |+--------------------------------+| 100818 image || 100824 image || 100825 video || 100826 video || 100827 video || 100828 video || 100829 video || 100830 video || 100831 video || 100832 video |+--------------------------------+10 rows in set (0.00 sec)

group_concat()

最后一个厉害了,正常情况下一个语句写成这样一定会报错的。

mysql> select id from test_user group by age;ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test_user.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

但是 group_concat() 可以将分组状态下的其他字段拼接成字符串查询出来

mysql> select group_concat(name) from test_user group by age;+--------------------+| group_concat(name) |+--------------------+| wen,ning || wxnacy,win |+--------------------+2 rows in set (0.00 sec)

默认使用逗号分隔,我们也可以指定分隔符

mysql> select group_concat(name separator ' ') from test_user group by age;+----------------------------------+| group_concat(name separator ' ') |+----------------------------------+| wen ning || wxnacy win |+----------------------------------+2 rows in set (0.00 sec)

将字符串按照某个顺序排列

mysql> select group_concat(name order by id desc separator ' ') from test_user group by age;+---------------------------------------------------+| group_concat(name order by id desc separator ' ') |+---------------------------------------------------+| ning wen || win wxnacy |+---------------------------------------------------+2 rows in set (0.00 sec)

如果想要拼接多个字段,默认是用空字符串进行拼接的,我们可以利用 concat_ws() 方法嵌套一层

mysql> select group_concat(concat_ws(',', id, name) separator ' ') from test_user group by age;+------------------------------------------------------+| group_concat(concat_ws(',', id, name) separator ' ') |+------------------------------------------------------+| 1,wen 2,ning || 3,wxnacy 4,win |+------------------------------------------------------+2 rows in set (0.00 sec)

以上就是Mysql 实现字段拼接的三个函数的详细内容,更多关于MySQL 字符串拼接的资料请关注真格学网其它相关文章! 您可能感兴趣的文章:mysql字符串拼接并设置null值的实例方法MySQL 常用的拼接语句汇总MySQL拼接字符串函数GROUP_CONCAT详解MySql逗号拼接字符串查询的两种方法利用java+mysql递归实现拼接树形JSON列表的方法示例mysql函数拼接查询concat函数的使用方法MySQL中字符串与Num类型拼接报错的解决方法PHP将MySQL的查询结果转换为数组并用where拼接的示例

SQL中字符型字段的拼接可以使用“+”或者“||”来实现,不过考虑e69da5e6ba9062616964757a686964616f31333366303839到你问题中这几个字段属于整形字段,需要先将整形进行数据类型转换后,再使用“+”或者“||”拼接。拼接的语法为:SELECT CAST(COLUMN1 AS VARCHAR(10)) + '-' + CAST(COLUMN2 AS VARCHAR(10)+ '-' + ........)  as P FROM TABLE ;或者:SELECT CAST(COLUMN1 AS VARCHAR(10)) || '-' + CAST(COLUMN2 AS VARCHAR(10) || '-' || ........)  as P FROM TABLE ;其中CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型。语法:CAST (expression AS data_type)举个例子:已知表 TableA,含ID、yy、mm、dd四个整数型字段。使用sql将yy、mm、dd三个字段进行拼接,语法:select ID,cast(yy as varchar(10))+ '-' + cast(mm as varchar(10)) + '-' + cast(dd as varchar(10))  as pp from TableA;则输出结果为:扩展资料:在SQL中,不同的数据库拼接字段的方法不尽相同,如MySQL: CONCAT()Oracle: CONCAT(), ||SQL Server: +CONCAT() 的语法如下:CONCAT(字串1, 字串2, 字串3, ...): 将字串1、字串2、字串3,等字串连在一起。请注意,Oracle的CONCAT()只允许两个参数;换言之,一次只能将两个字串串连起来。不过,在Oracle中,我们可以用'||'来一次串连多个字串。例子1:MySQL/Oracle:SELECT CONCAT(region_name,"-",store_name) name  FROM Geography或SELECT CONCAT(region_name,store_name) FROM GeographyWHERE store_name = 'Boston';结果:'EastBoston,通过GROUP_CONCAT实宏隐现,具体过程如下:1、原SQL语句如下:SELECT q.`32313133353236313431303231363533e59b9ee7ad9431333366303736id`, q.`questionContent`, o.`questionOption` FROM `exam_question` qINNER JOIN `exam_question_option` o ON q.`id` = o.`questionId` WHERE q.`questionType` = 12、此时的查询结果如下表:3、现在根据ID,将 questionOption 的字段简中整合拼接在一起,更改后的SQL语句如下:SELECT q.`id`, q.`questionContent`, GROUP_CONCAT(o.`questionOption`) AS questionOptionList FROM `exam_question` qINNER JOIN `exam_question_option` o ON q.`id` = o.`questionId` WHERE q.`questionType` = 1GROUP BY q.`id`3、执行结果如下:扩展资料:函数重点:不要忘了 GROUP BY id。group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']),group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来。要返回哪些列,由函数参数(就是字段名)决蔽咐厅定。分组必须有个标准,就是根据group by指定的列进行分组。本回答被网友采纳,1、语句如下:select 字段636f707962616964757a686964616f31333366306438A, 字段B, 字段A + 字段B as 字段C  From 表1注:字段A加上字段B的计算列命名为字段C2、计算列计算列由可以使用同一表中的其他列的表达式计算得来。表达式可以是非计算列的列名、常量、函数,也可以是用一个或多个运算符连接的上述元素的任意组合。表达式不能为子查询。原题的答案就是“计算列”。扩展资料:计算列应用范围计算列可用于选择列表、WHERE 子句、ORDER BY 子句或任何可使用正则表达式的其他位置,但下列情况除外:用作 CHECK、FOREIGN KEY 或 NOT NULL 约束的计算列必须标记为 PERSISTED。如果计算列的值由具有确定性的表达式定义,并且索引列中允许使用计算结果的数据类型,则可将该列用作索引中的键列,或者用作 PRIMARY KEY 或 UNIQUE 约束的一部分。例如,如果表中含有整数列 a 和 b,则可以对计算列 a + b 创建索引,但不能对计算列 a + DATEPART(dd, GETDATE()) 创建索引,因为在后续调用中,其值可能发生改变。计算列不能作为 INSERT 或 UPDATE 语句的目标。数据库引擎基于使用的表达式自动确定计算列的为 Null 性。即使只有非空列,大多数表达式的结果也“认为”可为空值,因为下溢或溢出生成的结果也可能为空。使用带 AllowsNull 属性的 COLUMNPROPERTY 函数可查明表中任何计算列的为 Null 性。通过指定 ISNULL (check_expression, constant) 可以将可为空值的表达式转换为不可为空值的表达式,其中, constant 是可替换所有空结果的非空值。参考资料:百度百科.计算列本回答被网友采纳,||哪种数5261据库?4102如果是SQLSERVER: SELECT CAST(COLUMN1 AS VARCHAR(10)) + '-' + CAST(COLUMN2 AS VARCHAR(10) ...) as P FROM TABLE 这么一1653直拼就好版了。如果是ORACLE: SELECT TO_CHAR(COLUMN1) ||权 '-' || TO_CHAR(COLUMN1)|| '-' || TO_CHAR... AS P FROM TABLE本回答被提问者采纳,SELECT CONVERT(VARCHAR(10),BILLID) + CONVERT(VARCHAR(10),BILLID) FROM S_BILL sb说明,所bai有数字都可以,可以很du多个字段zhi连接,在SQL2000下测dao试过这个最易明版了,CONVERT(VARCHAR(10),BILLID) 转成字符权,+ 表示连接内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mysql 显示sql语句执行时间的代码
  • mysql8.0使用窗口函数解决排序问题
  • mysql 学习总结 之 初步了解 innodb 存储引擎的架构设计
  • mysql之存储过程按月创建表的方法步骤
  • mysql中engine=innodb和engine=myisam的区别介绍
  • 详解mysql date函数
  • mysql on duplicate key update语句示例
  • 如何在windows中运行多个mysql实例详解
  • 更新text字段时出现row size too large报错应付措施
  • sysbench的安装与使用 分享
  • 1、sql查询语句时怎么把几个字段拼接成一个字段?...
  • 如何利用MySQL数据库中的字符串函数拼接截取
  • mysql存储过程动态拼接sql时能用函数吗
  • mysql有什么函数可以把字符串连接起来?
  • 如何利用MySQL数据库中的字符串函数拼接截取
  • mysql里的concat函数能把所有的两个字符串都连起来...
  • mysql循环插入语句,如何使循环变量i与字符串拼接...
  • 怎么在mysql里做字符串连接
  • mysql中concat函数的日期拼接方法
  • 如何用MYSQL函数删除字符串最后几个字符
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页mysql字符串拼接并设置null值的实例方法mysql 常用的拼接语句汇总mysql拼接字符串函数group_concat详解mysql逗号拼接字符串查询的两种方法利用java+mysql递归实现拼接树形json列表的方法示例mysql函数拼接查询concat函数的使用方法mysql中字符串与num类型拼接报错的解决方法php将mysql的查询结果转换为数组并用where拼接的示例mysql 显示sql语句执行时间的代码mysql8.0使用窗口函数解决排序问题mysql 学习总结 之 初步了解 innodb 存储引擎的架构设计mysql之存储过程按月创建表的方法步骤mysql中engine=innodb和engine=myisam的区别介绍详解mysql date函数mysql on duplicate key update语句示例如何在windows中运行多个mysql实例详解更新text字段时出现row size too large报错应付措施sysbench的安装与使用 分享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中前缀索引的用法php连接mysql的两种方式对比验证mysql是否安装成功的方法sql语句执行深入讲解(mysql架构总览->mysql如何在线修改主从复制选项mysql5.x版本乱码问题解决方案ubuntu下磁盘空间不足导致mysql无法启动的mysql 双向备份的实现方法将 ghost 从 sqlite3 数据库迁移到 mysql
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved