SQL скрипт генерирует оператор вставки со значениями через запятую - PullRequest
0 голосов
/ 30 марта 2020

У меня есть столбец таблицы, содержащий контактное лицо (лица), разделенные запятой (имя, фамилия, имя, фамилия). Я пытаюсь сгенерировать скрипт, который генерирует операторы вставки, но, похоже, не может найти способ обрабатывать вставки, если в значении присутствует более одного контактного лица.

SELECT('INSERT INTO contact(KundeId,FirstName,LastName,deleted,contactIdId)
('+ 'SELECT ' + 'Kunder.Id'
+ CAST(',' as Nvarchar(50)) + '''' + REVERSE(SUBSTRING(REVERSE(org.contactPerson),CHARINDEX(' ',REVERSE(org.contactPerson)),len(org.contactPerson)))+ ''''
+ CAST(',' as Nvarchar(50)) + '''' + REVERSE( LEFT( REVERSE(org.contactPerson), CHARINDEX(' ', REVERSE(org.KONTAKTPERSON)) -1 )) + ''''
+ CAST(',' as Nvarchar(50)) + '0'
+ CAST(',' as Nvarchar(50)) + CONVERT(varchar(255), org.ID)
+ ' from Kunder
WHERE customer.customerNumber = ' + CONVERT(varchar(255), org.customerNumber)
+')')
from Organisasjon org
where org.customerNumberis not null
and org.contactPersonis not null
ORDER BY org.customerNumber ASC

Это будет работать, как и ожидалось, в случаях, когда org.contactPerson не является значением, разделенным запятыми (только один человек).

У кого-нибудь есть идеи о том, как это можно решить?

Результат, когда у меня несколько контактов с одинаковым значением:

INSERT INTO Kontaktperson (KundeId, FirstName,LastName, Slettet,KontaktId)
(SELECT Kunder.Id,'"firstName LastName", "firstName"','"lastName"',NULL,NULL,NULL,0,23 
from Kunder WHERE Kunder.Kunderegisternummer = 2000003)

Здесь я бы хотел обрабатываться двумя операторами вставки вместо одного

С уважением

...