डेटा की एकरूपता पर निर्भर करता है - मान लें कि एक ही स्थान कॉलम एक बनाम दो में आप जो दिखाना चाहते हैं, उसके बीच विभाजक है:
WITH TEST_DATA AS
(SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)
SELECT SUBSTR(t.COLUMN_A, 1, INSTR(t.COLUMN_A, ' ')-1) AS COLUMN_A,
SUBSTR(t.COLUMN_A, INSTR(t.COLUMN_A, ' ')+1) AS COLUMN_B
FROM test_data T;
आप REGEX के साथ नीचे दी गई क्वेरी का भी उपयोग कर सकते हैं:
WITH TEST_DATA AS
(SELECT 'LOREM IPSUM' COLUMN_A FROM DUAL)
SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B
FROM test_data T;
Oracle 10g+ में रेगेक्स समर्थन है, जो आपको हल करने के लिए आवश्यक स्थिति के आधार पर अधिक लचीलेपन की अनुमति देता है। इसमें एक रेगेक्स सबस्ट्रिंग विधि भी है...
संपादित करें: 3 शब्द विभाजन:
WITH TEST_DATA AS
(SELECT 'LOREM IPSUM DIMSUM' COLUMN_A FROM DUAL)
SELECT REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 1) COLUMN_A,
REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 1, 2) COLUMN_B,
REGEXP_SUBSTR(t.COLUMN_A, '[^ ]+', 2, 3) COLUMN_C
FROM test_data T;
संदर्भ: