兼容性regexp_replace()postgres和h2

时间:2019-01-16 09:27:35

标签: postgresql spring-boot h2 spring-test

我们有Spring Boot Application,Postgres中有本机sql

Select .... 
where regexp_replace(LOWER(company_name), '\s', '', 'g') = regexp_replace(LOWER(:suspect), '\s', '', 'g')

并测试H2数据库,其中不支持regexp_replace flag 'g'

1 个答案:

答案 0 :(得分:0)

对于H2,我不确定是否需要g标志,因为所有匹配项的全局替换似乎是默认值。来自documentation

  

替换与正则表达式匹配的每个子字符串。有关详细信息,请参见Java String.replaceAll()方法。如果任何参数为null(可选的flagsString参数除外),则结果为null。

我假设H2的REGEXP_REPLACE由Java String#replaceAll在后​​台实现。在这种情况下,所有匹配的子字符串将被自动替换。

关于两个不同数据库的问题,您确实应该尝试将同一数据库用于测试和生产。失败了,如果可能的话,您可能希望坚持使用ANSI SQL。