Подстрока для Locate и Instr в Mysql и Oracle - PullRequest
0 голосов
/ 04 мая 2020

У меня есть 2 запроса, которые я выполняю один для Mysql 5.7 и один для Oracle. Возможно ли иметь один запрос, который будет работать как для Mysql, так и для Oracle.

SUBSTR(fg.PATH, 2, INSTR(fg.PATH, '/', 1, 2) - 2) - in oracle
SUBSTR(fg.PATH, 2, locate( '/',fg.PATH, 2) - 2) - in mysql 

Я пробовал регулярное выражение, но не повезло. Любое выражение, но которое должно работать для обоих.

Вот основной запрос, который мне нужно заменить

select *
from tab1 fg
         inner join CENV ce on ce.CID=SUBSTR(fg.PATH, 2, INSTR(fg.PATH, '/', 1, 2) - 2)

Мое приложение не позволит написать функцию и процедуру или любой триггер. ..

1 Ответ

0 голосов
/ 04 мая 2020

Это выражение даст вам тот же результат, что и исходное выражение Oracle для Oracle и MySQL 5.7:

SUBSTR(fg.path, 2, INSTR(fg.path, '/') + INSTR(SUBSTR(fg.path, 1 + INSTR(fg.path, '/')), '/') - 2)

Демонстрация для MySQL
Демо на Oracle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...