मैं अपनी प्रक्रिया में 'पसंद नहीं' के साथ IF शर्त का उपयोग कर रहा हूं ताकि यह जांचा जा सके कि मान HTTP या HTTPS से शुरू होता है या नहीं। लेकिन अगर मान HTTP/HTTPS से शुरू होता है या नहीं, तो दोनों मामलों के लिए भी यह आधार यूआरएल जोड़ता है।

इसे ठीक करने के लिए सुझाव चाहिए।

if lower(l_value) NOT LIKE 'http://%' or lower(l_value) NOT LIKE 'https://%' then
      l_value := l_baseURL || l_value;
end if;
1
User_G 21 सितंबर 2018, 12:49

2 जवाब

सबसे बढ़िया उत्तर

समस्या सिर्फ 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
Alex Poole 21 सितंबर 2018, 13:14

आपको शायद 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;
1
Plirkee 21 सितंबर 2018, 13:07