# 第三十章 SQL函数 CONCAT 标量字符串函数,它返回作为连接两个字符表达式的结果的字符串。 # 大纲 ```java {fn CONCAT(string-expression1,string-expression2)} ``` # 参数 - `string-expression1`, `string-expression2` - 要连接的字符串表达式。表达式可以是列名、字符串文字、数字或另一个标量函数的结果,其中底层数据类型可以表示为任何字符类型(如`CHAR`或`VARCHAR`)。 # 描述 连接两个字符串以返回连接的字符串。可以使用连接运算符(`||`)执行完全相同的操作。 可以连接数字或数字字符串的任意组合;连接结果是一个数字字符串。SQL在连接之前将数字转换为规范形式(指数被扩展,前导零和尾随零被删除)。在连接之前,数字字符串不会转换为规范形式。 可以将前导空格或尾随空格连接到字符串。将空值连接到字符串会产生空值;这是行业范围内的SQL标准。 字符串函数还可用于将两个或多个表达式连接成单个字符串。 # 示例 以下示例连接`Home_State`和`Home_City`列以创建位置值。使用`CONCAT`函数和`concatenate`运算符显示两次连接: ```sql SELECT {fn CONCAT(Home_State,Home_City)} AS LocationFunc, Home_State||Home_City AS LocationOp FROM Sample.Person ``` 以下示例显示尝试连接字符串和空值时发生的情况: ```sql SELECT {fn CONCAT(Home_State,NULL)} AS StrNull FROM Sample.Person ``` 下面的示例显示数字在连接之前转换为规范形式。要避免这种情况,可以将数字指定为字符串,如下所示: ```sql SELECT {fn CONCAT(Home_State,0012.00E2)} AS StrNum, {fn CONCAT(Home_State,'0012.00E2')} AS StrStrNum FROM Sample.Person ``` 以下示例显示将保留尾随空格: ```sql SELECT CHAR_LENGTH({fn CONCAT(Home_State,' ')}) AS StrSpace FROM Sample.Person ```