sql >> Database teknologi >  >> RDS >> Oracle

SQL - Opdel enkelt kolonne i flere kolonner

Afhænger af konsistensen af ​​dataene - hvis det antages, at et enkelt mellemrum er adskillelsen mellem det, du vil have vist i kolonne et vs. to:

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 også bruge nedenstående forespørgsel 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 regex-understøttelse, hvilket giver mere fleksibilitet afhængigt af den situation, du skal løse. Den har også en regex substring-metode...

EDIT: 3 ORD 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;
 

Reference:



  1. PHP MySql (1045) Adgang nægtet for bruger

  2. Vælg gennemsnit fra MySQL-tabellen med LIMIT

  3. advarselsproblem:forventer, at parameter 1 er mysqli_result

  4. Sådan sletter du et SQL Server Agent-job i Azure Data Studio