CONCAT 函数将联接两个表达式并返回生成的表达式。要联接两个以上的表达式,请使用嵌套 CONCAT 函数。在两个表达式之间使用联接运算符(||
)将生成与 CONCAT 函数相同的结果。
语法
CONCAT ( expression1, expression2 )
参数
- expression1、expression2
-
两个参数可以是固定长度字符串、可变长度字符串、二进制表达式或计算结果为其中一个输入的表达式。
返回类型
CONCAT 返回一个表达式。表达式的数据类型与输入参数的数据类型相同。
如果输入表达式的类型不同,Amazon Redshift 会尝试隐式转换其中一个表达式类型。如果值无法转换,则会返回一个错误。
使用说明
对于 CONCAT 函数和联接运算符,如果一个或多个表达式为 null,则联接的结果也为 null。
示例
以下示例联接两个字符文本:
SELECT CONCAT('December 25, ', '2008');
concat
-------------------
December 25, 2008
(1 row)
以下查询(使用 ||
运算符而不是 CONCAT)将生成相同的结果:
SELECT 'December 25, '||'2008';
?column?
-------------------
December 25, 2008
(1 row)
以下示例使用一个 CONCAT 函数中的另一个嵌套 CONCAT 函数来串联三个字符串:
SELECT CONCAT('Thursday, ', CONCAT('December 25, ', '2008'));
concat
-----------------------------
Thursday, December 25, 2008
(1 row)
要串联可能包含 NULL 的列,请使用 NVL 和 COALESCE 函数,它会在遇到 NULL 时返回给定值。以下示例使用 NVL 在遇到 NULL 时返回 0。
SELECT CONCAT(venuename, CONCAT(' seats ', NVL(venueseats, 0))) AS seating
FROM venue WHERE venuestate = 'NV' OR venuestate = 'NC'
ORDER BY 1
LIMIT 5;
seating
-----------------------------------
Ballys Hotel seats 0
Bank of America Stadium seats 73298
Bellagio Hotel seats 0
Caesars Palace seats 0
Harrahs Hotel seats 0
(5 rows)
以下查询联接 VENUE 表中的 CITY 和 STATE 值:
SELECT CONCAT(venuecity, venuestate)
FROM venue
WHERE venueseats > 75000
ORDER BY venueseats;
concat
-------------------
DenverCO
Kansas CityMO
East RutherfordNJ
LandoverMD
(4 rows)
以下查询使用嵌套 CONCAT 函数。该查询将联接 VENUE 表中的 CITY 和 STATE 值,但会使用逗号和空格分隔生成的字符串:
SELECT CONCAT(CONCAT(venuecity,', '),venuestate)
FROM venue
WHERE venueseats > 75000
ORDER BY venueseats;
concat
---------------------
Denver, CO
Kansas City, MO
East Rutherford, NJ
Landover, MD
(4 rows)
以下示例联接了两个二进制表达式。其中 abc
是一个二进制值(具有一个 616263
的十六进制表示形式),def
是一个二进制值(具有一个 646566
的十六进制表示形式)。结果会自动显示为二进制值的十六进制表示形式。
SELECT CONCAT('abc'::VARBYTE, 'def'::VARBYTE);
concat
-------------------
616263646566