合并两列并使用 SQL 服务器将结果输入不同的列

Combine two columns and input the result in a different columns using SQL server

任何人都可以帮助我插入下面的 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)
);

CONCAT 可从 SQL Server 2012 获得。使用 + 代替

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

要连接 SQL-server 中的字符串,您可以使用 CONCAT 函数或 +。你正试图同时做这两件事。

CONCAT 函数至少需要 2 个 comma-separated 个参数。

所以,要么

ID +'-'+ MBID

CONCAT(ID, '-', MBID)

首先,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);