sql >> Databasteknik >  >> RDS >> Oracle

SQL - Dela en kolumn i flera kolumner

Beror på konsistensen av data - antar att ett enda mellanslag är avgränsaren mellan vad du vill ska visas i kolumn ett mot två:

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;

Du kan också använda nedanstående fråga med 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+ har stöd för regex, vilket ger mer flexibilitet beroende på vilken situation du behöver lösa. Den har också en regex-delsträngsmetod...

EDIT: DELA 3 ORD:

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;

Referens:



  1. Hur man skapar och distribuerar Azure Database for MySQL Server med Azure Portal och Workbench

  2. MySQL-index skapas långsamt (på EC2)

  3. Oracle:Extrahera grafisk databasrepresentation

  4. Varför välja toppklausul kan leda till långa tidskostnader