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)执行隐式无损转换。例如,CLOBNCLOB 上的 CONCAT 产生了一个 NCLOB。数字上的 CONCATvarchar2 会导致 varchar2 等:

SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar

有些数据库可以使用非标准的+运算符(但在大多数情况下,+仅适用于数字):

SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';

在 SQL Server <2012 上,不支持 CONCAT+是连接字符串的唯一方法。