合并两列并使用SQL Server将结果输入到不同的列中

时间:2017-02-15 08:55:01

标签: sql-server concatenation concat

任何人都可以帮我解决下面的插入sql语句。我试图通过组合列ID(由数据库自动生成)和MBID列来创建SampleID。我有错误'CONCAT'不是公认的内置函数名称。 感谢

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)
);

3 个答案:

答案 0 :(得分:0)

可以从SQLServer 2012获得

CONCAT 。使用+来代替

另外请记住,您可能必须使用ISNULL来避免空值,因为CONCAT忽略空值

答案 1 :(得分:0)

要在SQL-server中连接字符串,您可以使用CONCAT函数或+。你正试图做到这两点。

CONCAT函数至少需要2个以逗号分隔的参数。

所以,

ID +'-'+ MBID

或者

CONCAT(ID, '-', MBID)

答案 2 :(得分:0)

首先,在SQL Server 2012中引入了CONCAT

使用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);