连接Int列

Pet*_*ter 7 sql t-sql sql-server sql-server-2005 sql-server-2008

我有一个名为Field_Data的表,表中的数据如下所示:

Date                          Track_ID          Item#
2011-02-25 00:00:00.000       70212             1
2011-02-25 00:00:00.000       70212             2
2011-03-09 00:00:00.000       70852             1
2011-03-09 00:00:00.000       70852             3
Run Code Online (Sandbox Code Playgroud)

我想把输出作为:

Date                          Final_ID
2011-02-25 00:00:00.000       70212_1
2011-02-25 00:00:00.000       70212_2
2011-03-09 00:00:00.000       70852_1
2011-03-09 00:00:00.000       70852_3
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

Select Date,Track_ID + '_' + Item# AS Final_ID
From Field_Data
Run Code Online (Sandbox Code Playgroud)

但它给了我以下错误:

消息245,级别16,状态1,行1
转换将varchar值'_'转换为数据类型int时失败.

任何人都可以帮我解决这个问题吗?

JNK*_*JNK 21

您需要将INT字段转换为varchar:

Select Date,CAST(Trakc_ID as varchar(20)) + '_' + CAST(Item# as varchar(20)) as Final_ID
From Field_Data
Run Code Online (Sandbox Code Playgroud)

  • 请不要在没有长度的情况下使用varchar.http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx (2认同)

RJB*_*RJB 5

注意任何新页面访问者,在 SQL Server 12+ 中,有一个CONCAT可用的功能。

SELECT CONCAT([Date], [TrackId], '_', [ItemNumber]) AS FinalId
FROM FieldData
Run Code Online (Sandbox Code Playgroud)