2

我需要正则表达式模式的帮助才能在 sql-statements 中的所有字符串值之前添加 N

例如:

之前: SELECT * FROM table WHERE column = '123';
之后: SELECT * FROM table WHERE column = N'123';

在那个例子中,我可以使用这个模式:'[^']+'. 但是,我需要有关此示例的模式方面的帮助:

之前: SELECT * FROM table WHERE column1 = 'One''Two' AND column2 = 'abc';
之后: SELECT * FROM table WHERE column1 = N'One''Two' AND column2 = N'abc';

如果有一个 double '',它应该跳过那些。

关于我的问题的信息: 在 SQL Server 中处理 Unicode 字符串常量时,必须在所有 Unicode 字符串前面加上前缀 N

4

1 回答 1

0

好吧,你可以使用这样的东西来满足上述要求(只要你用来应用它的任何东西都支持负面的后视:

(?<!')'[\w]+?'

它使用否定的lookbehind 来排除'and'之前的捕获'\w如果您需要空格/其他字符,您可能需要调整。

编辑(更新答案以包括评论中的额外字符串):

你可以试试:

(?<=\s)'.*?'

它将捕获字符之间出现的零个或多个字符'(不贪婪),并使用积极的后视来确保第'一个字符前面有一个空格字符,这应该满足您列出的所有字符串。

您可以选择在末尾添加一个负前瞻(?!\w)以跳过'O'Connor 中的内容。

于 2013-08-06T09:28:25.893 回答