सबसे पहले, यदि संभव हो तो एक ही कथन में सब कुछ करना लगभग हमेशा अधिक कुशल होता है।
आपकी दूसरी क्वेरी काम नहीं करती है क्योंकि आप सब कुछ एक ही स्ट्रिंग में वापस कर रहे हैं। यह नहीं है एक अल्पविराम सीमांकित सूची जैसा कि IN कथन द्वारा आवश्यक है।
हालांकि इससे बचने के लिए एक छोटी सी तरकीब है। मान लें कि आप दो चयन कथनों के बीच किसी चीज़ के लिए स्ट्रिंग का उपयोग कर रहे हैं जिसे आप regexp_substr()
अपनी स्ट्रिंग को किसी उपयोगी चीज़ में बदलने के लिए।
कुछ इस तरह काम करेगा;
select city
from vwpersonprimaryaddress
where state in (
select regexp_substr(v_province,'[^'',]+', 1, level)
from dual
connect by regexp_substr(v_province, '[^'',]+', 1, level) is not null
)
चर v_province
दो बार उद्धृत करने के लिए बदलना होगा, उदाहरण के लिए '''AB'',''AZ'',''BC'''
यह काम करने के लिए।
यह रहा एक कार्यशील उदाहरण