Я построил это решение на основе аналогичного вопроса здесь, но мой пример намного больше, чем приведенный здесь пример. Мое решение работает, но мне интересно, лучший ли он/самый эффективный.Разделение запятой Отдельные значения в столбцах oracle
Одно предостережение: мне нужно это, чтобы иметь возможность запускать как прямой запрос.
Я построил этот SQL, чтобы разбить строку на несколько столбцов. Я оставил свою переменную там, потому что:
- это короче, чем реальная строка и
- это на самом деле не имеет значения для задавая вопрос.
Во время выполнения эта переменная заменяется на строку с 14 значениями, разделенными 13 запятыми. Мне нужны последние 3 значения, объединенные вместе.
Без дальнейших церемоний, вот мой запрос:
select
regexp_substr('$CSV Text Single Line$','[^,]+',1, 1) c1,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 2) c2,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 3) c3,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 4) c4,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 5) c5,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 6) c6,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 7) c7,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 8) c8,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 9) c9,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 10) c10,
regexp_substr('$CSV Text Single Line$','[^,]+',1, 11) c11,
replace(regexp_substr('$CSV Text Single Line$','[^,]+',1, 12)
||','||
regexp_substr('$CSV Text Single Line$','[^,]+',1, 13)
||','||
regexp_substr('$CSV Text Single Line$','[^,]+',1, 14)
,'"','') c12
from dual
Заранее спасибо за любые советы.