sql >> Database >  >> RDS >> Oracle

SQL - Verdeel één kolom in meerdere kolommen

Hangt af van de consistentie van de gegevens - ervan uitgaande dat een enkele spatie het scheidingsteken is tussen wat u in kolom één versus twee wilt weergeven:

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;

U kunt de onderstaande zoekopdracht ook gebruiken met 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+ heeft regex-ondersteuning, waardoor meer flexibiliteit mogelijk is, afhankelijk van de situatie die u moet oplossen. Het heeft ook een regex-substringmethode...

BEWERKEN: 3 WOORDEN SPLIT:

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;

Referentie:



  1. Hoe gooi ik in SQL een foutmelding bij het bijwerken van 'niet null'-waarden in een databasetabel?

  2. ORA-01804 fout tijdens het laden van Oracle dbDriver

  3. Hoe stel je de schemanaam in voor reeksen tijdens de implementatie bij gebruik van JPA?

  4. Loop over array-dimensie in plpgsql