2017-02-15 15 views
0

Пожалуйста, помогите мне с инструкцией вставки sql ниже. Я пытаюсь создать SampleID, объединив идентификатор столбца (автоматический генерировать по базе данных) и столбец MBID. У меня ошибка «CONCAT» не является признанным встроенным именем функции. БлагодаряОбъедините два столбца и введите результат в разных столбцах с помощью SQL-сервера

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 для столбца идентификатора выборки. Ниже запроса можно использовать для этого ...

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 + вместо

Также вспомните, вы, возможно, придется использовать ISNULL, чтобы избежать аннулирует, Поскольку CONCAT игнорирует аннулирует

0

Для конкатенации строк в SQL-server вы можете использовать функцию CONCAT, или +. Вы пытаетесь сделать то и другое.

Функция CONCAT принимает не менее двух аргументов с разделителями-запятыми.

Таким образом, либо

ID +'-'+ MBID 

Или

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

Спасибо TOBB. Я попробовал эту вставку в Sample (MBID, SampleType, SampleDate, ConsultantName, Comments, FirstSample, SampleID) значения ('2088', 'PB', '2000-09-29', 'CSC', 'SEE TA FOR STORAGE lpd ref ',' YES ', ID +' - '+ MBID); У меня есть ошибка Недопустимое имя столбца 'ID'. и MBID Я использую SQL-сервер 2008 –

+0

Может быть, отсутствует '@' или что-то еще? У вас есть '@ MBID' где-то в другом месте, не знаю, если вы указали' @ ID' где угодно. – Tobb

+0

Идентификатор автоматически создается по базе данных [ID] INT IDENTITY (5, 1) NOT NULL –

 Смежные вопросы

  • Нет связанных вопросов^_^