如何使用SQL Server 2008 R2的CONCAT功能?如何使用SQL Server 200

2019-05-14 00:26发布

我一直在寻找一个CONCAT在SQL Server 2008 R2的功能。 我找到了链接这个功能 。 但是,当我使用这个功能,它提供了以下错误:

消息195,级别15,状态10,第7行
“CONCAT”是无法识别的内置函数名称。

是否CONCAT在SQL Server 2008 R2的功能存在?

如果没有,我怎么串联在SQL Server 2008 R2中的字符串?

Answer 1:

CONCAT是新的SQL Server 2012的你给的链接了这一点,它不是在早期版本的功能,其中包括2008 R2。

它是SQL Server 2012中可以在文档树中可以看出的一部分:

SQL Server 2012  
Product Documentation  
Books Online for SQL Server 2012  
Database Engine  
  Transact-SQL Reference (Database Engine)  
    Built-in Functions (Transact-SQL)  
      String Functions (Transact-SQL)  

编辑马丁·史密斯帮忙,指出SQL Server提供ODBC的的实现CONCAT功能 。



Answer 2:

只是为了完整性- 2008年的SQL,你会使用加号+操作员执行字符串连接。

看一看在MSDN参考示例代码。 与SQL 2012开始,您不妨使用新CONCAT功能 。



Answer 3:

我建议你投中的所有列,你Concat的面前

cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)

这应该为你工作。



Answer 4:

CONCAT,如前所述,是不是之前的SQL Server 2012的支持使用+运算符的建议不过您可以连接简单。 但要注意,如果第一个操作数是因为它认为将增加而不是串联的数字。这操作将抛出一个错误。 要解决此问题,只需在前面加“”。 例如

someNumber + 'someString' + .... + lastVariableToConcatenate

将引发一个错误,但'' + someNumber + 'someString' + ......会工作得很好。

另外,如果有要连接的两个号码请务必添加'他们之间,像这样

.... + someNumber + '' + someOtherNumber + .....


Answer 5:

在更换近似NULL安全下降为SQL Server 2012 CONCAT功能

SQL Server 2012中

SELECT CONCAT(data1, data2)

PRE SQL 2012(方案二):

SELECT {fn CONCAT(ISNULL(data1, ''), ISNULL(data2, ''))}

SELECT ISNULL(CAST(data1 AS varchar(MAX)), '') + ISNULL(CAST(data2 AS varchar(MAX)), '')

这两种解决方案整理一些优秀的答案,并通过其他的海报,包括@马丁·史密斯,@Svish和@ vasin1987提出警告。

这些选项添加NULL'' (空字符串)铸造安全NULL处理,而占的不同行为+关于具体的操作数操作。

注意ODBC定标器功能的解决方案是限制在2个参数,而+运营商的做法是扩展到许多参数需要。

还要注意关于违约@Swifty确定的潜在问题varchar通过这里补救大小varchar(MAX)



Answer 6:

(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert

只有投或转换,如果任何字段类型是与其他人不同。

在插入值需要在你需要它插入正确的位置。 使用“为”会给你一个错误。

Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))


文章来源: How do I use the CONCAT function in SQL Server 2008 R2?