0x01 常规方法 + 号拼接

注意:使用 + 号拼接的话,如果说,数据类型不同的话,是会报错的
例如:数字 + 字符串 是会报错的,所以为了解决这个问题可以使用 cast() 函数把数据全部转为 字符串类型

  1. 1> select cast(123 as varchar) + '|' + cast('456' as varchar);
  2. 2> go
  3. +---------+
  4. | |
  5. +---------+
  6. | 123|456 |
  7. +---------+
  8. (1 rows affected)

0x02 concat()

注意:SQL Server 2012才新增concat()函数
注意:如果 concat 的参数有NULL会无视掉

用途:连接一个或多个字符串
语法:concat(str1,str2…)

  1. # 不带NULL的
  2. 1> select concat('123','456','aaa','789');
  3. 2> go
  4. +--------------+
  5. | |
  6. +--------------+
  7. | 123456aaa789 |
  8. +--------------+
  9. (1 rows affected)
  1. # 带NULL的
  2. 1> select concat('123','456',NULL,'aaa','789');
  3. 2> go
  4. +--------------+
  5. | |
  6. +--------------+
  7. | 123456aaa789 |
  8. +--------------+
  9. (1 rows affected)

0x03 concat_ws()

注意:SQL Server 2012才新增concat_ws()函数

注意:如果 concat_ws 的参数有NULL会无视掉

用途:使用固定连接符连接一个或多个字符串
语法:concat_ws(separator,str1,str2…)

  1. # 不带NULL的
  2. 1> select concat_ws('-','aa','bb','cc');
  3. 2> go
  4. +----------+
  5. | |
  6. +----------+
  7. | aa-bb-cc |
  8. +----------+
  9. (1 rows affected)
  1. # 带NULL的
  2. 1> select concat_ws('-','aa','bb',NULL,'cc');
  3. 2> go
  4. +----------+
  5. | |
  6. +----------+
  7. | aa-bb-cc |
  8. +----------+
  9. (1 rows affected)