我有一个小问题,我在.Net应用程序中传递了几个SQL Server Like
查询(我无法控制),我需要转义一些字符才能使它们成为文字对于数据库。
例如,假设我尝试查询的字段类似于:
This_is [a] long_text field with [literal] characters in it
我的查询看起来像这样:
SELECT * FROM [MyTable] where [MyField] Like 'This_% [literal]%'
现在,应该获取该数据,挑战在于SQL Server不会将_
和[
字符视为字面字符,所以我必须将我的查询更新为:
SELECT * FROM [MyTable] where [MyField] Like 'This[_]% [[]literal]%'
然后它有效。
所以,我的问题是我想编写一个VB.Net函数,它使用RegEx查找语句的Like
部分,然后替换字符。
有些事情:
Public Function ConvertQuery(strSQL as string)
... Some kind of Regex that searches for the word "Like"
and then takes everytihng between the 2 "'" characters
Then replaces the "_" with "[_]" and "[" with "[[]"
Return ChangedString
End Function
我知道我给出了非常糟糕的细节,我知道我想要什么,我只是无法弄清楚如何使用RegEx。
另外,如果有一种更聪明的方法可以使用SQL Server Like
声明执行此操作,请也请告诉我!!!
谢谢!
答案 0 :(得分:0)
看到C#
标签,我认为您可以在C#中找到答案。
string input = "This_is [a] long_text field with [literal] characters in it";
var output = Regex.Replace(input, @"[_\[]","[$0]");
修改强>
string input = "SELECT * FROM [MyTable] where [MyField] Like 'This_% [literal]'";
var output = Regex.Replace(input, @"(?<=Like[ ]*\'.+?)[_\[]", "[$0]");