参数化SQL,ORACLE与SQL Server与正则表达式
本文关键字:SQL Server 正则表达式 参数 ORACLE | 更新日期: 2023-09-27 18:32:21
Oracle 和 Sql 服务器对参数化字符串中的参数使用不同的前缀。
使用 @p1
的 SQL
使用:p1
的 ORA
我想在我的SQL中使用@
,如果使用ORA数据库:
所有字符都应替换为@
。
你能帮我创建正则表达式吗?
下面是一些示例 SQL:
update test_table set text = :p1 where text = 'jana:klara' or some_value = :value or info = 'two'
类似的问题和替代解决方案可以在这里找到。
您可以使用此模式进行搜索搜索:
(?<='W):(?='w+)
例如:
string output = Regex.Replace(input, @"(?<='W):(?='w+)", "@");
以下是模式的含义:
-
(?<='W)
-(?<= ... )
语法声明了积极的后视。 换句话说,任何匹配项都必须在后面显示内容。 在这种情况下,它声明匹配项前面必须有一个非单词字符。 -
:
- 仅匹配冒号 -
(?='w+)
-(?= ... )
语法声明了积极的前瞻性。 换句话说,任何匹配项都必须跟在前瞻的内容之后。 在这种情况下,它声明匹配项后必须跟一个或多个单词字符。
请参阅在线演示。
我想不出任何理由为什么参数会是输入字符串中的第一件事,但如果可能的话,将其更改为 (?<=^|'W):(?='w+)
也可以解决这种情况。
正确的正则表达式:
statement = Regex.Replace(statement, @":(?=(?:'[^']*'|[^''n])*$)", "@");