разбивка текста

Mitresky
Дата: 11.02.2013 11:39:49
Ребят, такой вопрос. Как можно разбить по полям данный текст.

01. Книга\01.01. Абзац\01.01.01. Строка

Должно получится примерно так:
Столбец 1 |__Столбец 2_| ___ Столбец 3 __|
01. Книга | 01.01. Абзац | 01.01.01. Строка |


Понятно, что разбивку можно сделать по данному ' \ ' символу. Попробовал
CHARINDEX
, получилось обрезать только до первого " \ "
_djХомяГ
Дата: 11.02.2013 11:41:29
CHARINDEX + рекурсивное CTE
Гость333
Дата: 11.02.2013 11:50:47
Mitresky,

declare @s varchar(8000);
set @s = '01. Книга\01.01. Абзац\01.01.01. Строка';
select [Столбец 1] = left(@s, charindex('\', @s) - 1),
       [Столбец 2] = substring(@s, charindex('\', @s) + 1, charindex('\', @s, charindex('\', @s) + 1) - charindex('\', @s) - 1),
       [Столбец 3] = substring(@s, charindex('\', @s, charindex('\', @s) + 1) + 1, 8000);
_djХомяГ
Дата: 11.02.2013 11:51:27
Или с помощью динамики так
_djХомяГ
Дата: 11.02.2013 11:56:24
Если кол-во образующихся полей <=3 то можно использовать PARSENAME
например так
Mitresky
Дата: 11.02.2013 12:20:35
Гость333
Mitresky,

declare @s varchar(8000);
set @s = '01. Книга\01.01. Абзац\01.01.01. Строка';
select [Столбец 1] = left(@s, charindex('\', @s) - 1),
       [Столбец 2] = substring(@s, charindex('\', @s) + 1, charindex('\', @s, charindex('\', @s) + 1) - charindex('\', @s) - 1),
       [Столбец 3] = substring(@s, charindex('\', @s, charindex('\', @s) + 1) + 1, 8000);



А если неизвестная строка? Не '01. Книга\01.01. Абзац\01.01.01. Строка', а какая-нить другая, к примеру 'Книга\01.01. Абзац\01.01.01. Строка\01.01.01.01. Слово'. То есть может быть множество подстрок.
qwerty112
Дата: 11.02.2013 12:32:56
Mitresky
А если неизвестная строка? Не '01. Книга\01.01. Абзац\01.01.01. Строка', а какая-нить другая, к примеру 'Книга\01.01. Абзац\01.01.01. Строка\01.01.01.01. Слово'. То есть может быть множество подстрок.

и что ты будеш делать с неизвестным количеством столбцов ?
Mitresky
Дата: 11.02.2013 12:35:23
qwerty112
Mitresky
А если неизвестная строка? Не '01. Книга\01.01. Абзац\01.01.01. Строка', а какая-нить другая, к примеру 'Книга\01.01. Абзац\01.01.01. Строка\01.01.01.01. Слово'. То есть может быть множество подстрок.

и что ты будеш делать с неизвестным количеством столбцов ?


Мне нужно просто вывести их и всё. Если 3 параметра, то выводит 3, если 4, то 4..
alexeyvg
Дата: 11.02.2013 12:38:11
Mitresky
А если неизвестная строка? Не '01. Книга\01.01. Абзац\01.01.01. Строка', а какая-нить другая, к примеру 'Книга\01.01. Абзац\01.01.01. Строка\01.01.01.01. Слово'. То есть может быть множество подстрок.
Тогда нужно формировать динамический SQL, либо делать строки с запасом (то есть всегда будут выводиться к примеру 100 столбцов, но часть правых будут пустые)
Гость333
Дата: 11.02.2013 12:46:26
Mitresky
Мне нужно просто вывести их и всё. Если 3 параметра, то выводит 3, если 4, то 4..

Куда вывести? В каком виде? Как должны называться столбцы (слабо верится, что "Столбец 1" ... "Столбец N")?
Формулируйте задачу до конца, чо уж там.