用于检查值是否从http或https开始的Oracle过程

时间:2018-09-21 09:49:37

标签: oracle oracle11g sql-like

我在程序中使用 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 :(得分:1)

您可能应该使用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;

答案 1 :(得分:0)

问题仅是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;

但我认为这还真不清楚。