2015-06-08 4 views
1

Как разбить значение столбца, которое не имеет пробела или любого другого разделителя. Я искал форумы, но не смог найти решение для своего сценария.Как разбить значение столбца в Oracle sql

Вот мой сценарий

ID Column_Value 
011 abcdefgh

Результат должен быть

Column_Value1 Column_Value2 
abcd    efgh
+3

Что такое условие для раскола? –

+0

на каких основаниях вам нужно разбить его, если у вас нет разделителей? [в соответствии с этим] (https://docs.oracle.com/cd/E17952_01/refman-5.1-en/string-functions.html), вы можете использовать функции «Влево» и «Вправо» в зависимости от длины. –

+0

Может быть, СУБСТРИЙ? – jarlh

ответ

3

Предполагая, что вы просто хотите разделить колонки по середине, вы можете добиться этого с помощью комбинации substr и length:

SELECT SUBSTR(column_value, 1, LENGTH(column_value)/2), 
     SUBSTR(column_value, LENGTH(column_value)/2 + 1) 
FROM mytable 

SQLFiddle

+0

Большое спасибо, он работает ... – Mano

2

Если вы хотите, чтобы разбить строку на основе длины и количества символов, а затем использовать SUBSTR следующим образом:

SQL> with data(str) as(
    2 select 'abcdefgh' from dual 
    3 ) 
    4 select substr(str, 1, 4) col1, 
    5   substr(str, length(substr(str, 1, 4)) +1) col2 
    6 from data; 

COL1 COL2 
---- ---- 
abcd efgh 

SQL> 

выше, вы можете изменить значение 4 к желаемое значение. Помните, что оба они не являются взаимоисключающими.

Смежные вопросы