我在SQL Server 2008 R2中寻找CONCAT
函数。我found the link for this function。但是当我使用这个函数时,会出现以下错误:
Msg 195,Level 15,State 10,Line 7
'CONCAT'不是公认的内置函数名称。
SQL Server 2008 R2中是否存在CONCAT
函数?
如果没有,我如何在SQL Server 2008 R2中连接字符串?
答案 0 :(得分:97)
为了完整性 - 在SQL 2008中,您将使用加号+
运算符来执行字符串连接。
使用示例代码查看MSDN reference。从SQL 2012开始,您可能希望使用新的CONCAT function。
答案 1 :(得分:62)
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)
编辑 Martin Smith帮助指出SQL Server provides an implementation of ODBC's CONCAT
function。
答案 2 :(得分:39)
我建议你在连接之前投射所有列
cast('data1' as varchar) + cast('data2' as varchar) + cast('data3' as varchar)
这应该适合你。
答案 3 :(得分:23)
如前所述,在SQL Server 2012之前不支持CONCAT。但是,您可以根据建议使用+运算符连接。但请注意,如果第一个操作数是一个数字,则此运算符将抛出错误,因为它认为将添加而不是连接。要解决此问题,只需在前面添加''。例如
someNumber + 'someString' + .... + lastVariableToConcatenate
会引发错误但是'' + someNumber + 'someString' + ......
会正常工作。
另外,如果要连接两个数字,请确保在它们之间添加“”,就像这样
.... + someNumber + '' + someOtherNumber + .....
答案 4 :(得分:4)
SQL Server 2012 CONCAT功能的替换近似值中的NULL安全丢弃
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)), '')
这两个解决方案整理了其他海报提出的几个优秀答案和警告,包括@Martin Smith,@ Svish和@ vasin1987。
这些选项将NULL
添加到''
(空字符串)转换以进行安全NULL
处理,同时考虑与特定操作数相关的+
运算符的变化行为。< / p>
请注意,ODBC Scaler Function解决方案仅限于2个参数,而 +
运算符方法可根据需要扩展为多个参数。
另请注意@Swifty在varchar
补救的默认varchar(MAX)
尺寸中发现的潜在问题。
答案 5 :(得分:3)
(city + ', ' + state + ' ' + zip) as ctstzip for select
(city + ', ' + state + ' ' + zip) for insert
如果任何字段类型与其他字段类型不同,则仅进行转换或转换。
在插入时,值必须位于您需要插入的正确位置。使用“as”会给你一个错误。
即
Insert into testtable (ctstzip) Values ((city + ', ' + state + ' ' + zip))
答案 6 :(得分:0)
是的,该功能不在sql 2008中。您可以使用强制转换操作来做到这一点。
例如,我们有employee
表,而您想将name
与applydate
一起使用。
因此您可以使用
Select cast(name as varchar) + cast(applydate as varchar) from employee
它将在concat功能不起作用的地方工作。
答案 7 :(得分:0)
您可以在要连接的字符串之间使用“+”
SELECT string1 + string2
如果其中之一给出转换错误,例如其中一列是 int 列,您应该在连接列之前进行转换,如
SELECT (CONVERT(nvarchar, intColumn) + string2