[英]I need the Regular Expression For Replacing Characters in a SQL Statement
我试图匹配此SQL语句上的BETWEEN RANGE,如下所示:
( WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8 )
上面的SQL语句与DBS数据源一起使用,并且在通过ODBC驱动程序在iSeries连接上有效时,该DB连接类型不适用于ADO.NET。 ASP.NET ADO连接需要使用以下语法替换BETWEEN RANGE
date(digits(FIELDNAME) CONCAT '000000') <= current date and date(digits(FIELDNAME) CONCAT '000000') >= current date
WHERE FIELDNAME是在原始SQL语句中找到的WAEXD8列...
我已经尝试过了,但到目前为止还没有一个真正的解决方案...
同样,我希望将原始SQL查询的ASP.NET C#正则表达式匹配/替换为替换字符串,同时保留原始列名。 这可能吗? 模式或模式示例是什么,以便我可以做到?
可能的其他解决方案:
要匹配(任意数量的带有BETWEEN且具有HTML实体&
的空格)
例如: ([(])|([BETWEEN])*([0-9A-Za-z])*([)])
不确定要做什么,但以下是一些可以帮助您的示例:
&
BETWEEN语句&
和同一个FIELDNAME 将符合以下条件:
( WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8 )
(WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8)
(WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8 )
( WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8 )
( FIELDEXAMPLE1 BETWEEN &FIELDEXAMPLE1 AND &FIELDEXAMPLE1 )
不匹配:
( WAEXD8 BETWEEN WAEXD8 AND WAEXD8 )
( WAEXD8 BETWEEN 0 AND 9000 )
( WAEXD8 BETWEEN &WAEXD8&A;NY1 AND &WAEXD&8ANY2 )
( FIELDEXAMPLE1 BETWEEN &FIELDEXAMPLE2 AND &FIELDEXAMPLE2 )
Regex regexObj = new Regex(@"\(\s*(\w+)\s+BETWEEN\s+&
;\1\s+AND\s+&
;\1\s*\)"); resultString = regexObj.Replace(subjectString, "(date(digits($1) CONCAT '000000') <= current date and date(digits($1) CONCAT '000000') >= current date)");
或者,如果您知道字段名称为AMAZINGFIELDNAME
则:
Regex regexObj = new Regex(@"\(\s*(AMAZINGFIELDNAME)\s+BETWEEN\s+&
;\1\s+AND\s+&
;\1\s*\)"); resultString = regexObj.Replace(subjectString, "(date(digits($1) CONCAT '000000') <= current date and date(digits($1) CONCAT '000000') >= current date)");
将符合以下条件:
( WAEXD8 BETWEEN &WAEXD8 AND &WAEXD8 )
( WAEXD8 BETWEEN &WAEXD8&A;NY1 AND &WAEXD&8ANY2 )
( FIELDEXAMPLE1 BETWEEN &FIELDEXAMPLE2 AND &FIELDEXAMPLE2 )
Regex regexObj = new Regex(@"\(\s*(\w+)\s+BETWEEN\s+[\w&;]+\s+AND\s+[\w&;]+\s*\)");
resultString = regexObj.Replace(subjectString, "(date(digits($1) CONCAT '000000') <= current date and date(digits($1) CONCAT '000000') >= current date)");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.