2011-08-17 6 views
6

ben gibi tabloda Field_Data ve veri adında bir tablo görünüyor var: Ben böyle bir şey yaptığını çalıştıartarda Int kolonlar

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 

: Ben çıktı almaya çalışıyorum

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 

:

:
Select Date,Track_ID + '_' + Item# AS Final_ID 
From Field_Data 

Ama bana aşağıdaki hata verdi

Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the varchar value '_' to data type int.

Bunun nasıl yapılacağı konusunda bana yardımcı olan var mı?

cevap

20

Sen varchar olarak INT alanları döküm gerekir:

Select Date,CAST(Trakc_ID as varchar(20)) + '_' + CAST(Item# as varchar(20)) as Final_ID 
From Field_Data 
+1

11 saniye sonra beni yendi! –

+1

@Abe - Geçen turda kazandınız, şimdi bağlıyız sanırım. – JNK

+2

Lütfen varchar'ı uzun süre kullanmayın. http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx –

2

Başkanlarını kadar herhangi bir yeni sayfa ziyaretçiler için, SQL Server 12+ yılında, bir CONCAT işlevi mevcut var.

SELECT CONCAT([Date], [TrackId], '_', [ItemNumber]) AS FinalId 
FROM FieldData