如何在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的CONCAT
function的实现 。
只是为了完整性 – 在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))