sql >> Databáze >  >> RDS >> Oracle

SQL - Rozdělte jeden sloupec do více sloupců

Závisí na konzistenci dat – za předpokladu, že jedna mezera je oddělovač mezi tím, co chcete zobrazit ve sloupci jedna a dva:

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;

Můžete také použít níže uvedený dotaz s 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+ má podporu regulárních výrazů, což umožňuje větší flexibilitu v závislosti na situaci, kterou potřebujete vyřešit. Má také metodu podřetězce regulárního výrazu...

UPRAVIT: ROZDĚLENÁ 3 SLOVA:

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. Jaký je váš názor na používání textových identifikátorů ve sloupcích tabulky při přístupu k databázi s ohledem na normalizaci a škálovatelnost?

  2. Vložte více řádků z R Dataframe do databáze Oracle

  3. pg_query_params vrací chybu:zpráva bind poskytuje 2 parametry, ale připravený příkaz vyžaduje 1

  4. Existuje technika SQL pro objednávání podle více kritérií?