powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL. Разбор подстроки в select
5 сообщений из 5, страница 1 из 1
MS SQL. Разбор подстроки в select
    #39946768
KUDZURI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добра.
Прошу помочь с разбором строк из столбца
У меня есть тысяча строк следюущего содержания:

Тут есть регистрационный номер, ном. рег. N 4B10-12-2561-A-777P, и дальше текст который не нужен.
Тут есть регистрационный номер, Рег.номер 224562000B001P, и дальше текст который не нужен.

Мне необходимо в запросе отообразить только рег номера.
Я пошёл путём substring, string split не могу задействовать так как сервер 12. Но упёрся в то, что не знаю как в одном запросе select видоизменить один и тот же столбцец с разным входящим индексом.

Вот в каком направлении двигался:
Код: sql
1.
2.
substring(НазначениеПлатежа, charindex('N',@STRING)+1, ISNULL(NULLIF(CHARINDEX(',',@STRING, CHARINDEX('N',@STRING)+1),0)-CHARINDEX('N',@STRING), LEN(@STRING))-1) AS РегистрационныйНомер
FROM #T
...
Рейтинг: 0 / 0
MS SQL. Разбор подстроки в select
    #39946779
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KUDZURI,

Вы не привели алгоритм выделения нужного номера
...
Рейтинг: 0 / 0
MS SQL. Разбор подстроки в select
    #39946788
KUDZURI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критик, мне нужно получить в выборке только рег номера, ниже выделены зеленым, прошу помочь.
Код: sql
1.
2.
3.
4.
SELECT
substring(НазначениеПлатежа, charindex('N',НазначениеПлатежа)+1
, ISNULL(NULLIF(CHARINDEX(',',НазначениеПлатежа, CHARINDEX('N',НазначениеПлатежа)+1),0)-CHARINDEX('N',НазначениеПлатежа), LEN(НазначениеПлатежа))-1) AS РегистрационныйНомер
FROM #T


Находит рег номер в строке: Тут есть регистрационный номер, ном. рег. N 4B10-12-2561-A-777P, и дальше текст который не нужен.
Код: sql
1.
2.
3.
substring(НазначениеПлатежа, CHARINDEX('.',НазначениеПлатежа)+6
, ISNULL(NULLIF(CHARINDEX(',',НазначениеПлатежа, CHARINDEX('.',НазначениеПлатежа)+6),0)-CHARINDEX('.',НазначениеПлатежа), LEN(НазначениеПлатежа))-6) AS РегистрационныйНомер
FROM #T


Находит рег номер в строке: Тут есть регистрационный номер, Рег.номер 224562000B001P, и дальше текст который не нужен.


1. Возможно можно оптимизировать до одного запроса, думал зацепиться за вторую запятую и от неё вырезать всё до пробела влево, но понимания пока нет как это сделать...
2. Если возможности из первого пункта нет, как подвести эти два запроса, чтобы отработали оба, но каждый на своей строке?.
...
Рейтинг: 0 / 0
MS SQL. Разбор подстроки в select
    #39946799
nullin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KUDZURI,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
select b.resNum, a.rightPart, z.message
  from (values (N'Тут есть регистрационный номер, ном. рег. N 4B10-12-2561-A-777P, и дальше текст который не нужен.')
             , (N'Тут есть регистрационный номер, Рег.номер 224562000B001P, и дальше текст который не нужен.')
             , (N'Тут нетути')
             , (N'тут типа чисел быть не может и латинской н N 4B10-12-2561-A-777P запятой нетути')
             , (N'N 4B10-12-2561-A-777P, опа')) as z(message)
 cross apply(values (stuff(z.message, 1, nullif(patindex(N'%[N0-9]%', z.message), 0) - 1, ''))) as a(rightPart)
 cross apply(values (left(a.rightPart, nullif(charindex(',', a.rightPart), 0) - 1))) as b(resNum)

fiddle
...
Рейтинг: 0 / 0
MS SQL. Разбор подстроки в select
    #39946808
KUDZURI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nullin,
Спасибо, изящно, но мне не подходит такой вариант.
Подошла такая конструкция:

Код: sql
1.
substring(@p, patindex(N'%[N0-9]%',@p)+1, ISNULL(NULLIF(CHARINDEX(',',@p, patindex(N'%[N0-9]%',@p)+1),0)-patindex(N'%[N0-9]%',@p), LEN(@p))-1) AS РегистрационныйНомер
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL. Разбор подстроки в select
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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