SQL中的字符串拼接

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(PostgreSQL)

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://my.oschina.net/aijfanta/blog/714413

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server,可以使用不同的方法进行字符串拼接。在SQL Server 2012之前的版本,没有concat函数,但可以使用加号(+)进行字符串拼接。例如,可以使用以下语法进行字符串拼接: SELECT column1 + column2 AS concatenated_string FROM table_name 其,column1和column2是要拼接字符串列,table_name是要查询的表名。拼接的结果将会在查询结果以"concatenated_string"的别名显示。请注意,如果某个列的值为NULL,则拼接的结果也会为NULL。\[1\] 另外,如果需要拼接多个字符串,可以使用多个加号(+)进行连续拼接。例如: SELECT column1 + column2 + column3 AS concatenated_string FROM table_name 这样可以将多个字符串拼接成一个字符串。同样地,如果其任何一个列的值为NULL,拼接的结果也会为NULL。\[2\] 需要注意的是,SQL Server 2012及以后的版本新增了concat函数,可以更方便地进行字符串拼接。使用concat函数的语法如下: SELECT CONCAT(column1, column2) AS concatenated_string FROM table_name 这样可以将两个字符串拼接成一个字符串。同样地,如果其任何一个列的值为NULL,拼接的结果也会为NULL。\[1\] #### 引用[.reference_title] - *1* *2* *3* [SQL字符串拼接](https://blog.csdn.net/qq_20303591/article/details/118090852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值