powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Прошу помочь команда sql PATINDEX как правильно задать
6 сообщений из 6, страница 1 из 1
Прошу помочь команда sql PATINDEX как правильно задать
    #39822562
kirillo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята добрый день, давно тут не был, но появилась задачка не знаю как решить

Суть проблемы есть поле, в ms sql server 2008, типа varchar содержит номера входящих документов, номера разного вида и цифры типа 1,2,3 и с буквами типа 123/н, 45-нвх, и длинные номера тип 123/543н/786/452 задача их отсортировать по возрастанию номеров, причём где есть знак / в счёт берём только число до знака /.
Я посмотрел есть код в запросах sql типа заменить подстроку в строке, это replace а в ней я ищу начальную позицию не цифры с помощью PATINDEX использую для поиска шаблон типа '%[^0-9]%' но такой вариант заменяет мне все знаки - в номере 123-нвх-проба и оставляет 123нвхпроба, прошу подсказать как аккуратно выпутаться из этой ситуации, спасибо большое!
...
Рейтинг: 0 / 0
Прошу помочь команда sql PATINDEX как правильно задать
    #39822590
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Номер вида "111-0/15" должен восприниматься как 111 или 1110?
...
Рейтинг: 0 / 0
Прошу помочь команда sql PATINDEX как правильно задать
    #39822604
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kirilloРебята добрый день, давно тут не был, но появилась задачка не знаю как решить

Суть проблемы есть поле, в ms sql server 2008, типа varchar содержит номера входящих документов, номера разного вида и цифры типа 1,2,3 и с буквами типа 123/н, 45-нвх, и длинные номера тип 123/543н/786/452 задача их отсортировать по возрастанию номеров, причём где есть знак / в счёт берём только число до знака /.
Я посмотрел есть код в запросах sql типа заменить подстроку в строке, это replace а в ней я ищу начальную позицию не цифры с помощью PATINDEX использую для поиска шаблон типа '%[^0-9]%' но такой вариант заменяет мне все знаки - в номере 123-нвх-проба и оставляет 123нвхпроба, прошу подсказать как аккуратно выпутаться из этой ситуации, спасибо большое!

1. STRING_SPLIT
2. REPLACE
3. for XML path('')

ЗЫ. п.3 лучше бы не делать. Нормализуй данные. И будет тебе щастье.
...
Рейтинг: 0 / 0
Прошу помочь команда sql PATINDEX как правильно задать
    #39822654
kirillo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
111-0/15, должно быть 111, ребята кто знает дайте пожалуйста верный код для замены значения 1-проба-вх. На 1. Команды replace
...
Рейтинг: 0 / 0
Прошу помочь команда sql PATINDEX как правильно задать
    #39822668
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t table (docnum varchar(100));
insert into @t
values
 ('1'), ('123/н'), ('45-нвх'), ('123/543н/786/452'), ('A10');

select
 a.docnum, cast(c.s2 as bigint)
from
 @t a cross apply
 (select substring(a.docnum, isnull(nullif(patindex('%[0-9]%', a.docnum), 0), 1), 2147483647)) b(s1) cross apply
 (select left(b.s1, isnull(nullif(patindex('%[^0-9]%', b.s1), 0) - 1, 2147483647))) c(s2);
...
Рейтинг: 0 / 0
Прошу помочь команда sql PATINDEX как правильно задать
    #39822781
kirillo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm, большое спасибо, код действительно делает то что мне нужно, огромная польза вот моя строка которую я использую
UPDATE main_other SET Vr = REPLACE ( main_other.Vhod_number, SUBSTRING( main_other.Vhod_number,PATINDEX('%[^0-9]%',main_other.Vhod_number), 1),'');
Прошу вас подправьте мой код, сейчас получается так в файле
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Прошу помочь команда sql PATINDEX как правильно задать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]