三大数据库【字符串连接】与【数据类型转换】对比:Oracle vs MySQL vs SQL Server
一、连接符(字符串拼接)的区别
Oracle
-
使用
||
作为连接符 -
示例:
SELECT 'Hello' || ' ' || 'World' FROM dual;
-
也可以使用
CONCAT()
函数,但只能连接两个字符串
MySQL
-
使用
CONCAT()
函数作为主要连接方式 -
示例:
SELECT CONCAT('Hello', ' ', 'World');
-
也支持
||
,但默认情况下它表示逻辑OR,需要设置SQL模式(PIPES_AS_CONCAT)才能作为连接符
SQL Server
-
使用
+
作为连接符 -
示例:
SELECT 'Hello' + ' ' + 'World';
-
也支持
CONCAT()
函数(SQL Server 2012及更高版本)
二、数据类型转换的区别
Oracle
-
TO_CHAR()
: 将数字或日期转换为字符串 -
TO_NUMBER()
: 将字符串转换为数字 -
TO_DATE()
: 将字符串转换为日期 -
示例:
SELECT TO_CHAR(123.45) FROM dual; SELECT TO_NUMBER('123') FROM dual; SELECT TO_DATE('2023-01-01', 'YYYY-MM-DD') FROM dual;
MySQL
-
CAST()
和CONVERT()
函数 - 示例:
SELECT CAST(123.45 AS CHAR);
SELECT CONVERT('123', SIGNED INTEGER);
- 隐式转换较为宽松
SQL Server
-
CAST()
和CONVERT()
函数 -
CONVERT()
提供更多格式控制选项 -
示例:
SELECT CAST(123.45 AS VARCHAR); SELECT CONVERT(INT, '123'); SELECT CONVERT(VARCHAR, GETDATE(), 112); -- 带格式的日期转换
-
TRY_CAST()
和TRY_CONVERT()
(SQL Server 2012+)在转换失败时返回NULL而不是报错。