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

Откуда:
Сообщений: 78
необходимо удалить все что стоит в наименовании после числа (года). Например: 'Бух выписка 2012 р.'. В данном случае это 'р.' . Но там находиться может все что угодно.

update MISC
set MSC_NAME = Replace(MSC_NAME, 'р.', ' ')

запрос такого типа не подходит. Подскажите пожалуйста как можно реализовать по другому.
2 сен 13, 17:10    [14785594]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Glory
Member

Откуда:
Сообщений: 104760
"все что стоит в наименовании после числа (года). " - год это первый 4 цифры подряд ?
2 сен 13, 17:16    [14785641]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Читайте про строковые функции
Charindex
Left
Right
Reverse

вот это вот всё
2 сен 13, 17:16    [14785642]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
theglanda
Member

Откуда:
Сообщений: 78
Glory
"все что стоит в наименовании после числа (года). " - год это первый 4 цифры подряд ?

да, первые четыре
3 сен 13, 09:35    [14787687]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
theglanda
Glory
"все что стоит в наименовании после числа (года). " - год это первый 4 цифры подряд ?

да, первые четыре
UPDATE MISC 
SET MSC_NAME=ISNULL(LEFT(MSC_NAME,NULLIF(PATINDEX('%[0-9][0-9][0-9][0-9]%',MSC_NAME),0)+3),MSC_NAME);
3 сен 13, 09:44    [14787732]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Гость333
Member

Откуда:
Сообщений: 3683
theglanda
Glory
"все что стоит в наименовании после числа (года). " - год это первый 4 цифры подряд ?

да, первые четыре

Найти позицию в строке, с которой начинаются первые 4 цифры подряд, можно при помощи функции PATINDEX:
PATINDEX('%[0-9][0-9][0-9][0-9]%', Строка)

Дальше просто.
3 сен 13, 09:44    [14787735]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Glory
Member

Откуда:
Сообщений: 104760
theglanda
Glory
"все что стоит в наименовании после числа (года). " - год это первый 4 цифры подряд ?

да, первые четыре

Ну так
- найти начало подстроки из 4х подряд цифр
- выбрать подстроку от начала строки до найденной позиции +4
3 сен 13, 09:45    [14787738]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Glory
theglanda
пропущено...

да, первые четыре

Ну так
- найти начало подстроки из 4х подряд цифр
- выбрать подстроку от начала строки до найденной позиции +4
Всё-таки, +3
3 сен 13, 09:51    [14787764]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Glory
Member

Откуда:
Сообщений: 104760
iap
Glory
пропущено...

Ну так
- найти начало подстроки из 4х подряд цифр
- выбрать подстроку от начала строки до найденной позиции +4
Всё-таки, +3

В примере автора +4
"Например: 'Бух выписка 2012 р.'. В данном случае это 'р.'"
3 сен 13, 09:53    [14787772]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
ambarka_max
Member

Откуда: Россия
Сообщений: 517
iap
Glory
пропущено...

Ну так
- найти начало подстроки из 4х подряд цифр
- выбрать подстроку от начала строки до найденной позиции +4
Всё-таки, +3

А это смотря как трактовать "ДО" :)
3 сен 13, 09:54    [14787774]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Antoshka
Member

Откуда:
Сообщений: 828
Сделайте CLR-функцию для работы с регэкспами
3 сен 13, 12:00    [14788587]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Crimean
Member

Откуда:
Сообщений: 13148
declare @s varchar(200)
set @s = 'Бух выписка 2012 р.'
set @s = left( @s, 1 + len( @s ) - patindex( '%[0-9]%', reverse( @s )))
print '#' + @s + '#'
3 сен 13, 12:49    [14788891]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Crimean
declare @s varchar(200)
set @s = 'Бух выписка 2012 р.'
set @s = left( @s, 1 + len( @s ) - patindex( '%[0-9]%', reverse( @s )))
print '#' + @s + '#'
А так?
declare @s varchar(200)
set @s = 'Бух выписка 2012 р.7655'
set @s = left( @s, 1 + len( @s ) - patindex( '%[0-9]%', reverse( @s )))
print '#' + @s + '#'
Нужны же первые четыре цифры подряд от начала строки.
REVERSE() всё портит
3 сен 13, 12:53    [14788922]     Ответить | Цитировать Сообщить модератору
 Re: Удаление лишних символов в наименовании  [new]
Crimean
Member

Откуда:
Сообщений: 13148
iap,

ну поставь в patindex нужный паттерн :)
я альтернативный метод предложил, reverse часто в таких случаях все упрощает
3 сен 13, 12:58    [14788947]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить