mysql 更改查询结果追加值,sql多个字段拼接

Wesley13
• 阅读 593

### sql多个字段拼接

2012-01-05 14:05:47|  分类: 数据库 |  标签: |字号大中小 订阅

[

1. MySQL

在Java等编程语言汇总字符串的拼接可以通过加号“+”来实现,比如:"1"+"3"、"a"+"b"。在MySQL中也可以使用加号“+”来连接两个字符串比如下面的SQL:

SELECT '12'+'33', FAge+'1' FROM T_Employee

**+-----------+--------+
| '12'+'33' | FAge+1 |
+-----------+--------+
|        45 |     26 |
|        45 |     29 |
|        45 |   NULL |
|        45 |     24 |
|        45 |     26 |
|        45 |     29 |
|        45 |     28 |
|        45 |     26 |
|        45 |     36 |
+-----------+--------+
**

  仔细观察第一列,惊讶吗?这个列的现实结果并不是我们希望的“1233”,而是把“12”和“33”两个字符串当成数字来求两个数的和了;将一个数字与一个字符串用加号“+”链接也是同样的效果,比如这里的第二列。

  在MySQL中进行字符串的拼接要使用CONCAT()函数,CONCAT()函数支持一个或者多个参数,参数类型可以为字符串类型也可以是非字符串类 型。对于非字符串类型的参数MySQL将尝试将其转化为字符串类型,CONCAT()函数会将所有参数按照参数的顺序拼接成一个字符串作为返回值。比如下 面的SQL语句用于将用户的多个字段信息以一个字段的形式查询出来:

SELECT CONCAT('Staff Number :', 'Happiness Index', FNumber, FSalary/(FAge-21)) from t_employee

+----------------------------------------------------------+
| concat                                                   |
+----------------------------------------------------------+
| Staff number: Happiness index of DEV001 is 2075.000000   |
| Staff number: Happiness index of DEV002 is 328.571429    |
| NULL                                                                                     |
| Staff number: Happiness index of HR001 is 2150.000000    |
| Staff number: Happiness index of HR002 is 825.000000     |
| Staff number: Happiness index of IT001 is 785.714286     |
| Staff number: Happiness index of IT002 is 466.666667     |
| Staff number: Happiness index of SALES001 is 1325.000000 |
| Staff number: Happiness index of SALES002 is 592.857143  |
+----------------------------------------------------------+

MYSQL中还提供了另外一个进行字符串拼接的函数CONCAT_WS,CONCAT_WS可以在待拼接的字符串之间加入指定的分割符。它的第一个参数值为采用的分隔符,而剩下的参数则为待拼接的字符串值,比如执行下面的SQL:

SELECT CONCAT_WS(', ', FNumber,FAge, FDepartment, FSalary) FROM T_Employee

+------------------------------------------------------+
| concat_ws(', ', FNumber, FAge, FDepartment, FSalary) |
+------------------------------------------------------+
| DEV001, 25, Development, 8300.00                     |
| DEV002, 28, Development, 2300.00                     |
| DEV003, Development, 3333.00                         |
| HR001, 23, HumanResource, 4300.00                    |
| HR002, 25, HumanResource, 3300.00                    |
| IT001, 28, InfoTech, 5500.00                         |
| IT002, 27, InfoTech, 2800.00                         |
| SALES001, 25, Sales, 5300.00                         |
| SALES002, 35, Sales, 8300.00                         |
+------------------------------------------------------+

2. Oracle

Oracle中使用双竖杠"||"进行字符串拼接。比如下面的SQL语句:

SELECT '工号为' || FNumber || '的员工姓名为'||FName FROM T_employee where fname is not null

除了"||", Oracle还支持使用CONCAT()函数进行字符串拼接,比如执行下面的SQL语句:

SELECT CONCAT('工号: ' , FNumber) FROM T_Employee

与MySQL的CONCAT()函数不同,Oracle的CONCAT()函数只支持两个参数,不支持两个以上的字符串的拼接

如果要进行多个字符串的拼接的话,可以将多个CONCAT()函数嵌套使用,上面的SQL可以改写如下:

SELECT CONCAT(CONCAT(CONCAT('工号为', FNumber), '的员工姓名为'), FName) FROM T_Employee WHERE FName IS NOT NULL

](https://www.oschina.net/action/GoToLink?url=http%3A%2F%2Fchenqing24.blog.163.com%2Fblog%2Fstatic%2F84653842012052547526%2F)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
Android蓝牙连接汽车OBD设备
//设备连接public class BluetoothConnect implements Runnable {    private static final UUID CONNECT_UUID  UUID.fromString("0000110100001000800000805F9B34FB");
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这