如何使用正则表达式作为过程中的参数通过 java 执行 sql 过程?

How to perform sql procedure by java using regexp as parameter in procedure?

字段验证参数在我的 sql 数据库中默认具有 ^[A-Za-z\-.']*$ 值。

我有一个可以更改某些参数的存储过程。

我尝试用 ^[A-Za-z0-9\-.']*$ 更新此参数。

我尝试用 CallableStatement 执行该过程。请看下面:

String newRegexValue = "^[A-Za-z0-9\-.']*$";
String parameterName = "ValidationParameter";
CallableStatement callableStatement = connection.prepareCall("exec UpdateProcedure '"+parameterName  +"', '"+ newRegexValue +"' ");
callableStatement .execute();

但是我得到了 SQLServerException:

Incorrect syntax near ^

我试图在 ^ 之前添加一个反斜杠,但错误仍然存​​在。

我想主要问题在于筛选 newRegexValue

您忘记转义您的斜线。试试这个:

"^[A-Za-z0-9\-.']*$"

问题出在单引号(撇号)上,因为它也在 SQL 命令中使用。您要么需要转义它 (\'),要么 - 如果它在某些 XML 中使用 - 使用 ' 实体。

如果您不想在匹配中使用撇号,只需将其从正则表达式中删除即可。