मुझे लगता है कि मेरे पास जटिल आवश्यकता है।ओरेकल - स्ट्रिंग संयोजक क्रमपरिवर्तन
यह ओरेकल 10.2 का उपयोग करके एक संयोजी क्रमपरिवर्तन है, मैं इसे कार्टशियन जोड़ों का उपयोग करके हल करने में सक्षम हूं, लेकिन मुझे लगता है कि इसे सरल और अधिक लचीला बनाने के लिए कुछ सुधारों की आवश्यकता है।
मुख्य व्यवहार।
इनपुट स्ट्रिंग: 'एक दो'
उत्पादन: 'एक' 'दो' 'एक दो' 'दो एक'
मेरे समाधान के लिए मैं पर पाबंदी लगा रखी स्ट्रिंग्स की संख्या 5 (ध्यान दें कि आउटपुट फैक्टरियल के पास एक संख्या है)
एसक्यूएल:
with My_Input_String as (select 1 as str_id, 'alpha beta omega gama' as str from dual)
--------logic-------
, String_Parse as (
SELECT REGEXP_SUBSTR(str, '[^ ]+', 1, ROWNUM) str
FROM My_Input_String
where rownum < 6 -- string limitation --
CONNECT BY level <= LENGTH(REGEXP_REPLACE(str, '([^ ])+|.', '\1'))
)
--------CRAP select need refactoring-------
select str from String_Parse
union
select REGEXP_REPLACE(trim(s1.str||' '||s2.str||' '||s3.str||' '||s4.str||' '||s5.str), '(){2,}', ' ') as str
from
(select str from String_Parse union select ' ' from dual) s1,
(select str from String_Parse union select ' ' from dual) s2,
(select str from String_Parse union select ' ' from dual) s3,
(select str from String_Parse union select ' ' from dual) s4,
(select str from String_Parse union select ' ' from dual) s5
where
--
s1.str <> s2.str and s1.str <> s3.str and s1.str <> s4.str and s1.str <> s5.str
--
and s2.str <> s3.str and s2.str <> s4.str and s2.str <> s5.str
--
and s3.str <> s4.str and s3.str <> s5.str
--
and s4.str <> s5.str
क्या इसे एसक्यूएल में होना है या आप plsql का भी उपयोग कर सकते हैं? – Rene
क्या आपके पास स्ट्रिंग तत्वों की एक निश्चित संख्या होगी? क्योंकि अगर यह भिन्न हो सकता है, तो मुझे नहीं लगता कि आप पीएल/एसक्यूएल रूट करने से कैसे बच सकते हैं। "लचीला" शब्द का उपयोग यह बताता है कि आप क्या सोच रहे हैं। – APC
हाँ, यह plsql का उपयोग करके किया जा सकता है। स्ट्रिंग तत्वों की संख्या के संबंध में – Metl