Java oracle和sql server中的正则表达式子字符串/替换

Java oracle和sql server中的正则表达式子字符串/替换,java,sql,sql-server,oracle,hibernate,Java,Sql,Sql Server,Oracle,Hibernate,我尝试只搜索数据库中字符串的字母数字部分 String stringToSearch= originalString.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}]", "") 然而,oracle和sql server都使用不同的函数来替换正则表达式。我正在编写的代码可能适用于SQL Server或Oracle堆栈,具体取决于客户端 我尝试使用这样一个条款,它适用于两台服务器: query.addClause("REGEXP_SUBSTR('colu

我尝试只搜索数据库中字符串的字母数字部分

String stringToSearch= originalString.replaceAll("[^\\p{IsAlphabetic}^\\p{IsDigit}]", "")
然而,oracle和sql server都使用不同的函数来替换正则表达式。我正在编写的代码可能适用于SQL Server或Oracle堆栈,具体取决于客户端

我尝试使用这样一个条款,它适用于两台服务器:

query.addClause("REGEXP_SUBSTR('column1','[[:alphanum:]]') = ?", stringToSearch);
考虑对每个非字母数字字符执行
替换
,但您可以想象查询的速度

有什么我不知道的功能吗


请注意,可能有两种解决方案:字母数字字符上的子字符串或用“.”替换非字母数字字符。

实际上嵌套替换非常快。然而,我不推荐这种类型的东西,因为有太多的字符不是数字。我不知道有哪种通用的方法可以在两种DBMS中都起作用,并且也能很好地运行。这种类型的东西对于从代码中获取数据并将其输入数据库来说是一个很好的论据。通过这种方式,您可以利用每个数据库的功能,并且您的应用程序不会与数据紧密耦合。相反,使用嵌套的子字符串[a-zA-Z0-9]可以解决这个问题,但速度不是很慢吗?您能否解释一下“这种类型的事情将是将数据从代码中取出并放入数据库的一个很好的理由。”请你的意思是从数据库进入代码?不,我绝不会建议将数据检索移到代码中。您发布的内容看起来像是在托管代码中创建sql,并且您需要一个针对多个DBMS的通用查询。我的建议是将数据检索移到数据库中。存储过程或任何东西。通过这种方式,您可以自定义sql以适合您正在使用的DBMS。