CONCATENATE
在(标准 ANSI / ISO)SQL 中,字符串连接的运算符是||
。除 SQL Server 之外的所有主要数据库都支持此语法:
SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!
许多数据库支持 CONCAT
函数来连接字符串:
SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'
有些数据库支持使用 CONCAT
加入两个以上的字符串(Oracle 没有):
SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'
在某些数据库中,必须转换或转换非字符串类型:
SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'
某些数据库(例如,Oracle)执行隐式无损转换。例如,CLOB
和 NCLOB
上的 CONCAT
产生了一个 NCLOB
。数字上的 CONCAT
和 varchar2
会导致 varchar2
等:
SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar
有些数据库可以使用非标准的+
运算符(但在大多数情况下,+
仅适用于数字):
SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';
在 SQL Server <2012 上,不支持 CONCAT
,+
是连接字符串的唯一方法。