我们有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'
。
答案 0 :(得分:0)
对于H2,我不确定是否需要g
标志,因为所有匹配项的全局替换似乎是默认值。来自documentation:
替换与正则表达式匹配的每个子字符串。有关详细信息,请参见Java String.replaceAll()方法。如果任何参数为null(可选的flagsString参数除外),则结果为null。
我假设H2的REGEXP_REPLACE
由Java String#replaceAll
在后台实现。在这种情况下,所有匹配的子字符串将被自动替换。
关于两个不同数据库的问题,您确实应该尝试将同一数据库用于测试和生产。失败了,如果可能的话,您可能希望坚持使用ANSI SQL。