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

Откуда:
Сообщений: 116
Доброго времени суток, помогите решить задачу!
нужно строку типа
string
llo1j89fg89sd1

при образовать в
буквы цифры
llojfgsd 189891


вот то что получилось у меня
declare 
  @str varchar(250) = 'llo1j89fg89sd1'
  
;with cte (string, inc)
as
(
  select substring(@str,1,1), 1 as inc
  
  union all
  
  select substring(@str,c.inc + 1,1), c.inc + 1
  from cte c
  where c.inc < len(@str)
)
select cast(
(
  select c.string + ''
  from cte c
  where ascii(string) not between 48 and 58
  for xml path('')) as varchar(max)
) as string
12 ноя 13, 15:46    [15116073]     Ответить | Цитировать Сообщить модератору
 Re: парсинг строки  [new]
aleks2
Guest
noTpyJI
Доброго времени суток, помогите решить задачу!
нужно строку типа
string
llo1j89fg89sd1

при образовать в
буквы цифры
llojfgsd 189891


вот то что получилось у меня
declare 
  @str varchar(250) = 'llo1j89fg89sd1'
  
;with cte (string, inc)
as
(
  select substring(@str,1,1), 1 as inc
  
  union all
  
  select substring(@str,c.inc + 1,1), c.inc + 1
  from cte c
  where c.inc < len(@str)
)
select cast(
(
  select c.string + ''
  from cte c
  where ascii(string) not between 48 and 58
  for xml path('')) as varchar(max)
) as string


Явно плод больного воображения.

1. Две таблицы: 1) букв 2) цифр.
2. Две скалярные функции.
3. В каждой по одному selecty c replace.
12 ноя 13, 15:58    [15116183]     Ответить | Цитировать Сообщить модератору
 Re: парсинг строки  [new]
pio777
Member

Откуда:
Сообщений: 127
noTpyJI,
Вот тема похожая на вашу тыц
12 ноя 13, 16:16    [15116393]     Ответить | Цитировать Сообщить модератору
 Re: парсинг строки  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
DECLARE @S VARCHAR(100)='llo1j89fg89sd1';
SELECT
 (
  SELECT SUBSTRING(@S,number,1)
  FROM master.dbo.spt_values
  WHERE type='P' AND number BETWEEN 1 AND LEN(@S) AND SUBSTRING(@S,number,1) LIKE'[0-9]'
  ORDER BY number
  FOR XML PATH('')
 )[цифры]
,(
  SELECT SUBSTRING(@S,number,1)
  FROM master.dbo.spt_values
  WHERE type='P' AND number BETWEEN 1 AND LEN(@S) AND SUBSTRING(@S,number,1) NOT LIKE'[0-9]'
  ORDER BY number
  FOR XML PATH(''),TYPE
 ).value('.','varchar(100)')[буквы];
12 ноя 13, 16:25    [15116493]     Ответить | Цитировать Сообщить модератору
 Re: парсинг строки  [new]
noTpyJI
Member

Откуда:
Сообщений: 116
aleks2, Спасибо за комплимент! =)
18 ноя 13, 22:48    [15151282]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить