Совместимость regexp_replace () postgres и h2 - PullRequest
0 голосов
/ 16 января 2019

У нас есть приложение Spring Boot и собственный sql в Postgres

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

И есть тесты баз данных H2, где regexp_replace flag 'g' не поддерживается.

1 Ответ

0 голосов
/ 16 января 2019

Я не уверен, что вам нужен флаг g в случае H2, потому что глобальная замена всех совпадений представляется по умолчанию. Из документации :

Заменяет каждую подстроку, которая соответствует регулярному выражению. Для получения дополнительной информации см. Метод Java String.replaceAll (). Если какой-либо параметр имеет значение null (за исключением необязательного параметра flagsString), результатом является значение null.

Я предполагаю, что H2 * REGEXP_REPLACE реализуется под капотом Java String#replaceAll. В этом случае все соответствующие подстроки будут автоматически заменены.

Что касается вашей проблемы с двумя разными базами данных, вам действительно следует попытаться использовать одну и ту же базу данных как для тестирования, так и для производства. Если это невозможно, вы можете придерживаться ANSI SQL, если это возможно.

...