2017-02-15 38 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 –