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

Откуда:
Сообщений: 62
Добрый день.
Есть следующая задача:

В таблице в стринговом поле находятся следующие записи:
1.IREQ-SQL-NY-IR-IR_Main_Bi-IREQ-SQL-UK-IR-2C576420-D6A2-411E-8F9D-20A8C517D2C7
2.IREQ-SQL-SNG-EQ_HST-EQ_HST-IREQ-SQL-UK-EQ_HST-FD3F5D15-69C7-4E3D-9E07-8AF213160EFC

3.IREQ-SQL-UK-CM-8
4.IREQ-SQL-UK-TR-EXCHANGE-12
5.Distribution clean up: distribution

Необходимо сделать урезание записей таким образом чтобы результат был такого типа:
1.IREQ-SQL-NY-IR-IR_Main_Bi-IREQ-SQL-UK-IR
2.IREQ-SQL-SNG-EQ_HST-EQ_HST-IREQ-SQL-UK-EQ_HST
3.IREQ-SQL-UK-CM-8
4.IREQ-SQL-UK-TR-EXCHANGE-12
5.Distribution clean up: distribution

Тоесть где есть гексодецимальный хвост нужно его урезать,а где его нету ,то оставить запись без изменений.

Принимаются любые варианты ресчения задачи.

Зарание спасибо.
15 сен 09, 16:46    [7662847]     Ответить | Цитировать Сообщить модератору
 Re: Regylar Expression в MSSQL2005  [new]
Le Peace
Member

Откуда: Москва
Сообщений: 8969
select 
  case 
    when 
      substring(c, len(c) - 36 + 1, 36) not like '%[^A-F0-9-]%'
        and substring(c, len(c) - 36 + 9, 1) = '-'
        and substring(c, len(c) - 36 + 14, 1) = '-'
        and substring(c, len(c) - 36 + 19, 1) = '-' 
      then substring(c, 1, len(c) - 36 - 1)
    else c
  end as c
from (
  select 'IREQ-SQL-NY-IR-IR_Main_Bi-IREQ-SQL-UK-IR-2C576420-D6A2-411E-8F9D-20A8C517D2C7' as c union all
  select 'IREQ-SQL-SNG-EQ_HST-EQ_HST-IREQ-SQL-UK-EQ_HST-FD3F5D15-69C7-4E3D-9E07-8AF213160EFC' union all
  select 'IREQ-SQL-UK-CM-8' union all
  select 'IREQ-SQL-UK-TR-EXCHANGE-12' union all
  select 'Distribution clean up: distribution'
) x
15 сен 09, 16:59    [7662958]     Ответить | Цитировать Сообщить модератору
 Re: Regylar Expression в MSSQL2005  [new]
Maktym
Member

Откуда:
Сообщений: 62
Спасибо.Очень помогло.
Тема закрыта.
15 сен 09, 18:46    [7663706]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить