我在程序中使用 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;
答案 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;
但我认为这还真不清楚。