Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 данные по столбцам  [new]
мульуу
Guest
добрый

надо раздиль строчкуна столбцы.

прочитал

https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=592444&hl=%f0%e0%e7%e1%e8%f2%fc%20%f1%eb%ee%e2%e0

но у всех одинаковые знаки разделения, а у меня могут быть разными

Посоветуйсте пожалуйтса
17 окт 12, 17:17    [13335746]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу,
Guest
мульуу,

можно снчала реплейсом потом разделять
17 окт 12, 17:18    [13335757]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
REPLACE('строка','ВАШ разделитель','ЛЮБОЙ УДОБНЫЙ РАЗДЕЛИТЕЛЬ') 

и патом задача сводиться к стандартной прочитай вами :))
17 окт 12, 17:19    [13335762]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
Glory
Member

Откуда:
Сообщений: 104751
мульуу
но у всех одинаковые знаки разделения, а у меня могут быть разными

И в чем проблема ? Добавить в код проверку на разные разделители что мешает ?
17 окт 12, 17:22    [13335781]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
iap
Member

Откуда: Москва
Сообщений: 47107
мульуу,

Функция, которая делит строку на слова

Можно и без функции.
17 окт 12, 17:25    [13335810]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мельуу,
Guest
Glory,

у меня задача


из

столбце1
162/1245\563

сделать

столбце1 столбце2 столбце3
162 --- 1245 ---- 563
17 окт 12, 17:26    [13335817]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
Glory
Member

Откуда:
Сообщений: 104751
мельуу,
у меня задача


из

столбце1
162/1245\563

сделать

столбце1 столбце2 столбце3
162 --- 1245 ---- 563

И что у вас вызвало трудности ?
Готовых вариантов десятки, если не сотни
17 окт 12, 17:27    [13335829]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
мельуу,,

и шо у вас же готовый ответ уже есть.
17 окт 12, 17:27    [13335833]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу
Guest
Maxx,
-----------------------------
----вот хорошее решение
-------------------------------

DECLARE @str varchar(2000);
SELECT @str =
'aa bb cc dd'
SELECT @str = REPLACE(@str, CHAR(10), ' ');
SELECT @str = REPLACE(@str, CHAR(13), '');

WITH ProcessText AS
(SELECT 1 as startPos, CHARINDEX (' ',@str, 1) as spacePos
UNION ALL
SELECT spacePos+1, CHARINDEX (' ',@str, spacePos+1)
FROM ProcessText WHERE spacePos > 0)
SELECT startPos,
spacePos,
SUBSTRING(@str, startPos, spacePos - startPos) as word
FROM ProcessText WHERE spacePos <> 0
UNION ALL
SELECT MAX(spacePos) + 1, 0, RIGHT(@str, LEN(@str) - MAX(spacePos))
FROM ProcessText
OPTION(MAXRECURSION 0);
17 окт 12, 17:35    [13335902]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу,
Guest
мульуу,

не... оно по вертикали выкладывает а мне по горозинотали надо
17 окт 12, 17:39    [13335927]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
Glory
Member

Откуда:
Сообщений: 104751
мульуу,
не... оно по вертикали выкладывает а мне по горозинотали надо

а по диагонали не надо ?
17 окт 12, 17:41    [13335942]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
iap
Member

Откуда: Москва
Сообщений: 47107
Рекурсия - тормоз!
DECLARE @S VARCHAR(100)='162/1245\563', @Delimiters VARCHAR(100)='/\';
SELECT
 [Столбец1]=MAX(CASE RN WHEN 1 THEN S ELSE '' END)
,[Столбец2]=MAX(CASE RN WHEN 2 THEN S ELSE '' END)
,[Столбец3]=MAX(CASE RN WHEN 3 THEN S ELSE '' END)
FROM
(
 SELECT ROW_NUMBER()OVER(ORDER BY V.number),V.number,SUBSTRING(@S COLLATE Cyrillic_General_CI_AI,V.number,
  (
   SELECT MIN(VV.number)
   FROM master.dbo.spt_values VV
   WHERE VV.type='P' AND VV.number BETWEEN V.number AND LEN(@S)+1
   AND CHARINDEX(SUBSTRING(@S+LEFT(@Delimiters,1),VV.number,1),@Delimiters)>0
  )-V.number
 )
 FROM master.dbo.spt_values V
 WHERE V.type='P' AND V.number BETWEEN 1 AND LEN(@S)+1
 AND CHARINDEX(SUBSTRING(LEFT(@Delimiters,1)+@S,V.number,1),@Delimiters)>0
)T(RN,N,S)
WHERE S>'';
17 окт 12, 17:49    [13335996]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу
Guest
iap,

К сожалению у меня иногда и буквы появляются
17 окт 12, 17:55    [13336031]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу
Guest
мульуу,

Msg 536, Level 16, State 2, Line 5
Invalid length parameter passed to the RIGHT function.
17 окт 12, 18:03    [13336085]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
мульуу,
Guest
мульуу,

Помогите пожалуйста убрать 1 столбец он лишний


--declare @t1 table (nk int,phone varchar(100))

--insert @t1(nk,phone) select 1,' ВАIT ЗНАЧЕНИЕ '


--select t1.nk,
--(
-- select substring(t.phone,v.number,1)
-- from @t1 t join master.dbo.spt_values v
-- on v.type = 'P' and v.number between 1 and len(t.phone) and substring(t.phone,v.number,1) like '[0-9]'
-- where t.nk = t1.nk
-- order by v.number
-- for xml path('')
-- ) phone
--from @t1 t1
17 окт 12, 18:51    [13336283]     Ответить | Цитировать Сообщить модератору
 Re: данные по столбцам  [new]
iap
Member

Откуда: Москва
Сообщений: 47107
мульуу
iap,

К сожалению у меня иногда и буквы появляются
Что?!
17 окт 12, 20:14    [13336598]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить