Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL — Podziel pojedynczą kolumnę na wiele kolumn

Zależy od spójności danych - zakładając, że pojedyncza spacja jest separatorem między tym, co ma się pojawić w kolumnie pierwszej a drugiej:

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;

Możesz również użyć poniższego zapytania z 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+ obsługuje regex, co zapewnia większą elastyczność w zależności od sytuacji, którą musisz rozwiązać. Ma również metodę podciągu wyrażeń regularnych...

EDYTUJ: PODZIELENIE 3 SŁÓW:

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;

Odniesienie:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle-XMLTYPE :Jak zaktualizować wartość

  2. Jak napisać zapytanie, które robi coś podobnego do GROUP_CONCAT MySQL w Oracle?

  3. Oracle:jak UPSERT (zaktualizować lub wstawić do tabeli?)

  4. oracle konwertuj czas epoki unix na datę

  5. Procedura Oracle