Разделение данных на 2 столбца в oracle - PullRequest
1 голос
/ 15 апреля 2020

У меня есть 1 столбец в таблице ColA, ColB, в котором я хочу сохранить некоторые значения. Есть еще одна таблица, из которой я выбираю информацию и буду вставлять в эту таблицу. ColA имеет VARCHAR(25) длину и ColB также имеет VARCHAR(25) длину. Теперь данные, которые я выбираю, больше выделенной длины. Скажем, в нем 35 символов, как я могу разделить и выбрать 25 символов в ColA и отдохнуть в ColB? Это действительно плохая практика или плохой способ задать такой вопрос?

INSERT INTO Master_Table
SELECT Val AS ColA, NULL AS ColB FROM Child_Table

Надеюсь, я объяснил, что я ищу.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Это плохая практика, скорее всего.

Использование SUBSTR, например

insert into master_table (cola, colb)
  select substr(input_value, 1, 25),    --> first 25 characters go to COLA
         substr(input_value, 26)        --> the rest goes to COLB
  from another_table;
1 голос
/ 15 апреля 2020

Вы можете использовать строковые функции:

INSERT INTO Master_Table(ColA, ColB)
SELECT 
    SUBSTR(Val, 1, 25),    -- the first 25 characters of the string
    SUBSTR(Val, 26)        -- the reminder (if any)
FROM Child_Table

Форма с тремя аргументами SUBSTR() позволяет вам определить начальную точку и количество символов, которые нужно взять. Форма с двумя аргументами принимает все от заданной позиции до конца строки. Если начальная точка превышает длину строки, возвращается значение NULL.

...