Разделение строки обновления SQL Server - PullRequest
0 голосов
/ 28 мая 2018

Я пытаюсь выяснить, есть ли способ разделения необходимых данных в строке, например, так:

 number = 3,
 line = 1,
 hardwarePartNum = '',
 ...
 inv_status = 3,
 inv_netName = 1,
 inv_maintGrp = 3,
 inv_maintVen = 4,
 ...
 qty_SerialNum = '',
 qty_Location = '',
 qty_Property = '',
 ...

Как вы видите выше, у меня есть 3 различных типа значений, которые мне нужныобновите значения в моем запросе.

inv_... и qty_... - это одна таблица, а первый набор из 3 значений (те значения, у которых нет zzz_ перед ними) находятся в другойтабл.

Как и возможно ли разделить эти значения на 2 группы.Первая группа без zzz_, а вторая основа - inv_... и qty_....

Как только я разделю их, я могу сделать что-то вроде этого:

UPDATE 
    bLine 
SET 
    @val1 
WHERE 
    theGuid = @val2;

UPDATE 
    invLine2 
SET 
    @val3 
WHERE 
    theGuid = @val4;

Итакприведя выше:

@val1 = number = 3,line = 1,hardwarePartNum = '',....
@val2 = 54grs-r459-32r-6exlq-15g4
@val3 = inv_status = 3,inv_netName = 1,inv_maintGrp = 3,inv_maintVen = 4,qty_SerialNum = '',qty_Location = '',qty_Property = '',....
@val4 = a45vz-u300-2bd-4710j-vf09

Я уверен, что какой-то тип regex может сделать что-то подобное, но я не настолько хорош в этом, поэтому любая помощь будет отличной!

1 Ответ

0 голосов
/ 28 мая 2018

Вам нужно два регулярных выражения.Одна, которая получает ваши первые 3 строки, другая получает остальные.

((?!((inv)|(qty))).*=.*),

Возвращает значения, которые не начинаются с inv или qty, и исключает запятую.

(((inv)|(qty)).*=.*),

Аналогичным образом, вы получите случаи, когда он начинается с inv или qty, также исключая запятую.

Используйте Regex.Matches, чтобы получить все строки, соответствующие вашему регулярному выражению.Возможно, вам придется использовать RegexOptions.Multiline Я не могу проверить это прямо сейчас.

Вы будете использовать группу 1, а не полное совпадение.Группа 1 является результатом самых внешних скобок этих выражений.Полное совпадение сохранит запятые, и тогда нам придется беспокоиться об обрезке последней.

Теперь у вас есть две коллекции строк, используйте string.Join с ',', чтобы собрать их вместе и правильноставьте запятые между строк.

...