正则表达式 判断检测sql语句
publicstaticRegexrxColumns=newRegex(@"\A\s*SELECT\s+((?:\((?>\((?<depth>)|\)(?<-depth...
public static Regex rxColumns = new Regex(@"\A\s*SELECT\s+((?:\((?>\((?<depth>)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|.)*?)(?<!,\s+)\bFROM\b", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled);
这个上面的限制了 sql的查询语句 如果用 with temp as() 这种方式查询就匹配不了 在调用这个方法的时候返回false 怎么修改下 让它能也可以匹配 with as 的查询语句 展开
这个上面的限制了 sql的查询语句 如果用 with temp as() 这种方式查询就匹配不了 在调用这个方法的时候返回false 怎么修改下 让它能也可以匹配 with as 的查询语句 展开
展开全部
public static Regex rxColumns = new Regex(@"\A(with\s+(?:(?!\bas\b).)+\s+as)?\s*SELECT\s+((?:\((?>\((?<depth>)|\)(?<-depth>)|.?)*(?(depth)(?!))\)|.)*?)(?<!,\s+)\bFROM\b", RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Singleline | RegexOptions.Compiled);
追问
我用
var m = rxColumns.Match(sql);
if (!m.Success)
return false;
调用 上面的方法 怎么返回的还是false
sql值:
with tep as (
SQL语句 ) select * from tep order BY AddDateTime DESC
请问需要在怎么修改一下?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询