Моя подчеркнутая база данных - сервер MS SQL. Я использую HQL-запрос через Java Hibernate.
Если я использую функцию замены внутри concat, это неправильно интерпретирует запрос.
Например:
HQL Query : from Project where replace('\\\\yyy\\\\','\\\\','\\\\\\\\') like concat(replace(projectPathPrefix,'\\\\','\\\\\\\\\\\\\\\\')),'%') and sourceControlSystems=3
SQL interpretation : select * from PRJ_project project where (replace('\\ooo\\', '\\', '\\\\') like replace(project0_.project_path_prefix+'\\'+'\\\\\\\\')+'%' and source_control_system_id=3
Он также преобразует запятые ,
функции замены в +
, поскольку внешние скобки содержат функцию concat. Это прекрасно работает, если необлагаемая база данных - MySQL или Oracle, поскольку обе используют функцию concat. Но поскольку SQL-сервер использует оператор «+» для конкатенации, HQL заменит функцию concat на +
очень абсурдным образом. Пожалуйста, предложите какое-то решение для этого.