Oracle SQL - отдельный столбец в несколько столбцов - PullRequest
0 голосов
/ 12 сентября 2018

Я работаю с Oracle SQL, и у меня возникла проблема, которую я не знаю, как решить. В моей таблице есть столбец, который состоит из одной буквы (из a-f) и числа, затем другой буквы (a-f) и другого числа и т. Д.

Пример столбца:

a 30, d 800, b 233

Есть ли способ разделить столбец на несколько столбцов в операторе выбора? Так что я получаю экс:

TEXTA  NUMBERA  TEXTB  NUMBERB   TEXTD   NUMBERD
  a     30       b      233       d       800

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Попробуйте этот код с данными примера,

WITH TEST_DATA AS
(SELECT 'a 30' COLUMN_A,'d 800' COLUMN_B,'b 233' COLUMN_C FROM DUAL)

SELECT SUBSTR(t.COLUMN_A, 1, INSTR(t.COLUMN_A, ' ')-1) AS TEXTA,
   SUBSTR(t.COLUMN_A, INSTR(t.COLUMN_A, ' ')+1) AS NUMBERA,
   SUBSTR(t.COLUMN_B, 1, INSTR(t.COLUMN_B, ' ')-1) AS TEXTD,
   SUBSTR(t.COLUMN_B, INSTR(t.COLUMN_B, ' ')+1) AS NUMBERD,
   SUBSTR(t.COLUMN_C, 1, INSTR(t.COLUMN_C, ' ')-1) AS TEXTB,
   SUBSTR(t.COLUMN_C, INSTR(t.COLUMN_C, ' ')+1) AS NUMBERB
FROM test_data T;

Для справки http://www.sqlfiddle.com/#!4/e6cff/1

0 голосов
/ 12 сентября 2018

Вы уверены, что хотите, чтобы они были такими столбцами?

Если вы укажете:

SELECT  REGEXP_SUBSTR (str, '[^, \s]+', 1, 1)    AS part_1
,       REGEXP_SUBSTR (str, '[^, \s]+', 1, 2)    AS part_2
,       REGEXP_SUBSTR (str, '[^, \s]+', 1, 3)    AS part_3
,       REGEXP_SUBSTR (str, '[^, \s]+', 1, 4)    AS part_4
, ...
FROM    table_x

str - это имя вашего столбца, table_x - это ваша таблица

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...