如何在SQL Server 2008 R2中使用CONCATfunction?

我在SQL Server 2008 R2中寻找CONCAT函数。 我find了这个function的链接 。 但是当我使用这个函数时,会出现以下错误:

Msg 195,Level 15,State 10,Line 7
“CONCAT”不是公认的内置函数名称。

SQL Server 2008 R2中是否存在CONCAT函数?

如果不是,我如何连接SQL Server 2008 R2中的string?

CONCAT是SQL Server 2012的新手。你给出的链接清楚地表明,它不是早期版本 (包括2008 R2)的function。

它是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的CONCATfunction的实现 。

只是为了完整性 – 在SQL 2008中,您可以使用加号+运算符来执行string连接。

看看带有示例代码的MSDN参考 。 从SQL 2012开始,您可能希望使用新的CONCATfunction 。

我build议你在连接它们之前先把所有的列都放上

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

这应该适合你。

如前所述,CONCAT在SQL Server 2012之前不受支持。但是,您可以按照build议简单地使用+运算符进行连接。 但要小心,如果第一个操作数是一个数字,那么这个操作符会抛出一个错误,因为它认为会join而不是连接在一起。 要解决这个问题,只需在前面添加“”。 例如

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

会提出一个错误,但是'' + someNumber + 'someString' + ......将工作得很好。

另外,如果要连接两个数字,请确保在它们之间添加“”,如此

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

只有在任何字段types与其他字段types不同的情况下才进行转换

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

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