分离SQL Server更新字符串

时间:2018-05-28 15:43:03

标签: c# sql-server regex sql-update separator

我试图弄清楚是否有一种方法可以将字符串中所需的数据分开:

 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_的值)在另一个表中。

如何以及可能将这些值分成两组。第一组没有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

我确定某种类型的正则表达式可以做类似的事情,但我不是那么棒,所以任何帮助都会很棒!

1 个答案:

答案 0 :(得分:0)

您需要两个正则表达式。一个获得前3行,另一个获得其余部分。

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

将返回不以inv或qty开头的值,并将排除逗号。

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

同样会告诉你它以inv或qty开头的情况,也不包括逗号。

使用Regex.Matches获取与正则表达式匹配的所有行。你可能不得不使用RegexOptions.Multiline我现在无法测试它。

您将使用第1组,而不是完整匹配。第1组是这些表达式最尖端括号的结果。完全匹配将保存逗号,然后我们不得不担心修剪最后一个。

您现在有两个字符串集合,使用string.Join','将它们组合在一起并正确地在行之间放置逗号。