Процедура Oracle, чтобы проверить, начинается ли значение с http или https - PullRequest
0 голосов
/ 21 сентября 2018

Я использую условие IF с ' NOT LIKE ' в моей процедуре, чтобы проверить, начинается ли значение с HTTP или HTTPS.Но если значение начинается с HTTP / HTTPS или нет, то в обоих случаях он добавляет базовый URL.

Нужны предложения, чтобы это исправить.

if lower(l_value) NOT LIKE 'http://%' or lower(l_value) NOT LIKE 'https://%' then
      l_value := l_baseURL || l_value;
end if;

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018

Проблема только в or;это должно быть and:

if lower(l_value) NOT LIKE 'http://%' and lower(l_value) NOT LIKE 'https://%' then
      l_value := l_baseURL || l_value;
end if;

Одно и то же значение не может соответствовать обоим условиям одновременно, поэтому, если оно совпадает с одним, оно все равно не будет соответствовать другому;так что ваш исходный or всегда будет истинным для любого значения.

Вы можете получить тот же эффект, используя LIKE и затем отрицая все условие or:

if NOT (lower(l_value) LIKE 'http://%' or lower(l_value) LIKE 'https://%') then
      l_value := l_baseURL || l_value;
end if;

но я не думаю, что это на самом деле яснее.

0 голосов
/ 21 сентября 2018

Вы, вероятно, должны использовать AND вместо OR

if lower(l_value) NOT LIKE 'http://%' and lower(l_value) NOT LIKE 'https://%' then
      l_value := l_baseURL || l_value;
end if;
...