MYSQL,SQLSERVER,ORACLE中字符串拼接异同:
一、MYSQL:
在MYSQL中进行字符串的拼接需要使用CONCAT函数,CONCAT函数支持一个或者多个参数,参数类型可以为字符串类型也可以是非字符串类型,对于非字符串类型的参数MYSQL将尝试将其转化为字符串类型,CONCAT函数会将所有参数按照参数的顺序拼接成一个字符串做为返回值。比如下面的SQL语句用于将用户的多个字段信息以一个计算字段的形式查询出来:
SELECT CONCAT('工号为:',FNumber,'的员工的幸福指数:',FSalary/(FAge-21)) FROM T_Employee;
执行完毕我们就能在输出结果中看到下面的执行结果:
CONCAT('工号为:',FNumber,'的员工的幸福指数:',FSalary/(FAge-21))
工号为:DEV001的员工的幸福指数:2075.000000
工号为:DEV002的员工的幸福指数:328.685714
工号为:HR001的员工的幸福指数:1100.440000
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.80
HR001,23,HumanResource,2200.88
注:在MYSQL中,当用加号“+”连接两个字段(或者多个字段)的时候,MYSQL会尝试将字段值转换为数字类型(如果转换失败则认为字段值为0),然后进行字段的加法运算。因此,当计算的'12'+'33'的时候,MYSQL会将“12”和“33”两个字符串尝试转换为数字类型的12和33,然后计算12+33的值。
二、SQLSERVER:
与MYSQL不同,SQLServer中可以直接使用加号“+”来拼接字符串。比如执行下面的SQL语句:
SELECT '工号为'+FNumber+'的员工姓名为'+Fname FROM T_Employee WHERE FName IS NOT NULL;
执行完毕我们就能在输出结果中看到下面的执行结果:
工号为DEV001的员工姓名为Tom
工号为DEV002的员工姓名为Jerry
工号为HR001的员工姓名为Jane
工号为HR002的员工姓名为Tina
说明:在SQLSERVER中使用“+”拼接时,只限于在字符串间进行,当字符串与数值类型值“+”时,SQLSERVER会自动尝试将字符串转换为相应的数值类型后执行加法操作,当转换失败时,提示相应错误信息。如:
select fullName+12.02 FROM T_Customer;
提示错误信息为:从数据类型 nvarchar 转换为 numeric 时出错。
三、ORACLE:
Oracle中使用“||”进行字符串拼接,其使用方式和SQLServer中的加号“+”一样(注:因自己本地没有ORACLE数据库,所以与数值类型的值执行“||”没有测试)。比如执行下面的SQL语句:
SELECT '工号为'||FNumber||'的员工姓名为'||FName FROM T_Employee WHERE FName IS NOT NULL;
执行完毕我们就能在输出结果中看到下面的执行结果:
工号为||FNUMBER||的员工姓名为||FNAME
工号为DEV001的员工姓名为Tom
工号为DEV002的员工姓名为Jerry
工号为SALES001 的员工姓名为John
除了“||”,Oracle还支持使用CONCAT()函数进行字符串拼接,比如执行下面的SQL语句:
SELECT CONCAT('工号:',FNumber) FROM T_Employee
执行完毕我们就能在输出结果中看到下面的执行结果:
CONCAT(工号:,FNUMBER)
工号:DEV001
工号:DEV002
工号:HR001
工号:HR002
如果CONCAT中连接的值不是字符串,Oracle会尝试将其转换为字符串,比如执行下面的SQL语句:
SELECT CONCAT('年龄:',FAge) FROM T_Employee
执行完毕我们就能在输出结果中看到下面的执行结果:
CONCAT(年龄:,FAGE)
年龄:25
年龄:28
年龄:23
年龄:28
注:与MYSQL的CONCAT()函数不同,Oracle的CONCAT()函数只支持两个参数,不支持两个以上字符串的拼接,比如下面的SQL语句在Oracle中是错误的:
SELECT CONCAT('工号为',FNumber,'的员工姓名为',FName) FROM T_Employee WHERE FName IS NOT NULL
运行以后Oracle会报出下面的错误信息:
参数个数无效
如果要进行多个字符串的拼接的话,可以使用多个CONCAT()函数嵌套使用。
相关推荐
4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合结果集 4.8.1 简单的结果集联合 4.8.2 联合结果集的原则 4.8.3 UNION ALL 4.8.4 联合结果集应用举例 第5章 函数 ...
程序员的SQL金典-文字完整版,不多说了,程序员数据库开发不可多得的宝典
最适合程序员看的有关sql的书籍 本书很适合有经验的人看
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
《程序员的SQL金典》主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析。《程序员的SQL金典》分为3部分:第1部分为基础篇,主要讲解数据库对增、删、改...
4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合结果集 4.8.1 简单的结果集联合 4.8.2 联合结果集的原则 4.8.3 UNION ALL 4.8.4 联合结果集应用举例 第5章 函数 ...
4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合结果集 4.8.1 简单的结果集联合 4.8.2 联合结果集的原则 4.8.3 UNION ALL 4.8.4 联合结果集应用举例 第5章 函数 ...
4.6.4 字符串的拼接 4.6.5 计算字段的其他用途 4.7 不从实体表中取的数据 4.8 联合结果集 4.8.1 简单的结果集联合 4.8.2 联合结果集的原则 4.8.3 UNION ALL 4.8.4 联合结果集应用举例 第5章 函数 ...
程序员 SQL 金典 完整版 最给力的 完整版
程序员的SQL金典,很值得一看的!专门为程序员写的!很值得收藏阅读
程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历...
《程序员的SQL金典》主要介绍SQL的语法规则及在实际开发中的应用,并且对SQL在MySQL、MS SQL Server、Oracle和DB2中的差异进行了分析。《程序员的SQL金典》分为3部分:第1部分为基础篇,主要讲解数据库对增、删、改...
黑马程序员-SpringCloud-学习笔记01-认识微服务
程序员 SQL 金典 完整版 最给力的 完整版
资源名称:程序员面试金典-第五版资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
黑马程序员-SpringCloud-学习笔记-02-微服务拆分及远程调用
程序员的SQL金典,一本sql基础书籍。
程序员的SQL金典,非常实用,程序员的SQL金典,程序员的SQL金典
好程序员学习笔记--UI基础UIWindow、UIView.doc
本章介绍数据库的入门知识,首先介绍什么是数据库,然后介绍数据库中的一些基本概念,接着介绍操纵数据库的不同方式,最后介绍操纵数据库时使用的语言SQL,在章节中我们还将穿插一些非常有趣的话题。