2017-02-15 39 views
0
不同的列

請誰能幫我下面插入SQL語句。我正在嘗試通過組合列ID(由數據庫自動生成)和MBID列來創建SampleID。我遇到錯誤'CONCAT'不是公認的內置函數名稱。 感謝結合兩列,並輸入結果使用SQL Server

SqlCommand sc = new SqlCommand(@"insert into Sample (MBID, SampleType,SampleDate,ConsultantName,Comments,FirstSample, SampleID) 
values(@MBID , @SampleType , @SampleDate , @ConsultantName , @Comments, CONCAT(ID +'-'+ MBID) ;", con); 


Table Design 

CREATE TABLE [dbo].[Sample] (
[ID]    INT   IDENTITY (5, 1) NOT NULL, 
[SampleID]  NVARCHAR (50) NOT NULL, 
[SampleType]  NVARCHAR (50) NULL, 
[SampleDate]  DATE   NULL, 
[ConsultantName] NVARCHAR (50) NULL, 
[Comments]  NVARCHAR (MAX) NULL, 
[FirstSample] NVARCHAR (MAX) NULL, 
[MBID]   INT   NULL, 
CONSTRAINT [PK_Sample] PRIMARY KEY CLUSTERED ([SampleID] ASC) 
); 

回答

0

首先,CONCAT在SQL Server 2012中

引入使用CONCAT功能:

SELECT CONCAT ('Welcome ', 'World ', '!') AS Result; 

其次,你要汽車生成的值連接到示例Id列的id值。下面的查詢可以被用於該...

SELECT IDENT_CURRENT('table_name')+1; 

現在,改變您的查詢,如下

SqlCommand sc = new SqlCommand(@"insert into Sample (MBID, SampleType,SampleDate,ConsultantName,Comments,FirstSample, SampleID) 
values(@MBID , @SampleType , @SampleDate , @ConsultantName , @Comments, cast((IDENT_CURRENT('Sample')+1) as VARCHAR(max)) +'-'+ CAST(@MBID AS VARCHAR(10)));", con); 
+0

感謝工作我正在使用Sql server 2008 –

0

CONCAT可從SQLServer的2012..use +代替

而且remeber,您可能需要使用ISNULL避免空,由於CONCAT忽略空

0

來連接字符串在SQL-server,你既可以使用CONCAT功能,或+。你正在努力做到這一點。

CONCAT函數採用至少2逗號分隔的參數。

所以,要麼

ID +'-'+ MBID 

或者

CONCAT(ID, '-', MBID) 
+0

感謝TOBB。我嘗試將此插入到樣本(MBID,SampleType,SampleDate,ConsultantName,Comments,FirstSample,SampleID) values('2088','PB','2000-09-29','CSC','SEE TA for STORAGE lpd ref','YES',ID +' - '+ MBID);我有錯誤無效的列名'ID'。和MBID我正在使用SQL Server 2008 –

+0

可能是缺少'@'或什麼的?您在其他地方有'@MBID',不知道您是否在任何地方定義了@ @ ID .. – Tobb

+0

ID由數據庫自動生成[ID] INT IDENTITY(5,1)NOT NULL –