2015-11-02 189 views
1

我有一个正则表达式,我想在SQL语句中找到所有空字符串(并用NULL替换它们)。正则表达式只匹配最后一次出现

这样的:

INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES ('','',"xxx's",'','') 

变为这样:

INSERT INTO sometable (F1,F2,F3,F4,F5) VALUES (NULL,NULL,"xxx's",NULL,NULL) 

我想确保我只是更新VALUES()阵列,这就是我凸轮了但是这只匹配最后一次出现的''而不是其他3个空字符串。

/VALUES.*\(.*('').*\)/ 

这可能吗?

+0

我不认为你可以解决这个用一个正则表达式替换字符串。你能告诉我们你用什么语言,也许我们可以建议一个优雅的解决方案? –

+0

谢谢,它是JavaScript,是的有几种方法可以在Javascript中做到这一点,但我想知道是否只能用正则表达式才能实现。 – crankshaft

回答

1

哇。这看起来很危险哈哈。

,我认为这会工作:

myString.replace(/VALUES.*\(.*\)/, function (values) { 
    return values.replace(/''/g, 'null'); 
}); 

虽然在技术上仍然2个正则表达式,你可以把一个内胆采用ES6 :)

myString.replace(/VALUES.*\(.*\)/, str => str.replace(/''/g, 'null')); 
+0

非常感谢您的帮助,但我只是试图使用正则表达式来实现它,如果我使用其他js函数,例如split,replace,substr等,有很多方法可以做到这一点。 – crankshaft

相关问题