我有一个使用JDBC进行数据库交互的java应用程序。我想基于一系列正则表达式进行搜索,但应用程序应该是通用的,我们不知道数据库引擎是否会通过mysql,oracle,sql server等,但我们很确定它会是mysql或oracle。
常规表达式会将我的应用程序限制在特定数据库中,还是可以使用它们而不用担心兼容性?
答案 0 :(得分:4)
好吧,使用正则表达式会限制你支持它们的DBMS :-)。也就是说,至少Oracle,MySQL,PostgreSQL和MS-SQL支持某种regexp,所以它原则上应该不是问题。当然,您可能仍会遇到兼容性问题。
您最好的选择可能是将正则表达式的使用局限于应用程序的某些已定义部分,例如应用程序中的一些存储过程或一个生成SQL查询的模块。
无论如何,这是一种很好的做法,并且会使以后的改变变得可行。
答案 1 :(得分:3)
虽然理论上我认为MySQL和Oracle都支持POSIX ERE,MySQL使用REGEXP,Oracle使用REGEXP_LIKE,而regular-expressions.info注意到Oracle实现的怪癖(有可能类似的MySQL)。
所以,你可能无法使用它。
答案 2 :(得分:1)
是的,使用非标准SQL功能(如正则表达式搜索)会将您的应用程序限制在特定数据库中。
像slekse建议的那样,一个好的解决方案是将非标准SQL功能的使用局限于一个特定的模块。然后,如果更改DBMS,则只需要更改该模块。