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

Откуда:
Сообщений: 1520
Есть строка:

"cn=IVANOV,cn=Users,ou=999-99,ou=Branches,ou=Blalala,ou=Branches,ou=Blalala,ou=Branches,ou=AI,ou=OrgUnit,o=SSS,C=RU"

нужно получить "999-99" отсюда, то есть то, что стоит после 2й по порядку запятой в тексте и заканчивается перед 3й запятой..
прошу помочь
28 май 14, 10:04    [16083561]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Glory
Member

Откуда:
Сообщений: 104751
Santa89
прошу помочь

Найдите на сайте пример парсинга строки с произвольным разделителем
28 май 14, 10:06    [16083573]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Santa89
Member

Откуда:
Сообщений: 1520
Исчу, все не то
28 май 14, 10:20    [16083650]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Функция, которая делит строку на слова
SELECT TOP(1)S
FROM [dbo].[ParseString]('cn=IVANOV,cn=Users,ou=999-99,ou=Branches,ou=Blalala,ou=Branches,ou=Blalala,ou=Branches,ou=AI,ou=OrgUnit,o=SSS,C=RU',',=')
ORDER BY NULLIF(ROW_NUMBER()OVER(ORDER BY N),6);
28 май 14, 10:21    [16083656]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Santa89
Member

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

спасибо, то что нужно!
28 май 14, 10:29    [16083726]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Для обработки строк MS рекомендует использовать CLR функции.
28 май 14, 10:42    [16083821]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Владислав Колосов
Для обработки строк MS рекомендует использовать CLR функции.
Ссылку на рекомендацию дайте, пожалуйста.
28 май 14, 10:44    [16083834]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Ха-ха, так и знал, что кто-то это напишет. Я не держу цитатник под рукой, извините.
28 май 14, 14:42    [16085662]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Подобная информация содержится в ряде обучающих курсов MS и в них же объясняется их позиция относительно применимости CLR.
28 май 14, 14:44    [16085674]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Glory
Member

Откуда:
Сообщений: 104751
Владислав Колосов
Подобная информация содержится в ряде обучающих курсов MS и в них же объясняется их позиция относительно применимости CLR.

Рекомендации остаются рекомендациями.
Нативный код всегда имеет преимущества перед внешним хотя бы по затратам на поддержку.
Так что палка она всегда о двух концах.
28 май 14, 14:47    [16085701]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
CLR - это совершенно инородная приблуда для самых крайних случаев. ИМХО.
28 май 14, 15:23    [16086048]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
сравнение способов парсинга в различных условиях http://sqlperformance.com/2012/07/t-sql-queries/split-strings
если кому интересно
28 май 14, 15:23    [16086051]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Shakill
сравнение способов парсинга в различных условиях http://sqlperformance.com/2012/07/t-sql-queries/split-strings
если кому интересно
Там утверждается, что mulistatement function с рекурсивным CTE
быстрее inline function с таблицей чисел.
Это очень странно.
28 май 14, 15:38    [16086180]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
iap
Shakill
сравнение способов парсинга в различных условиях http://sqlperformance.com/2012/07/t-sql-queries/split-strings
если кому интересно
Там утверждается, что mulistatement function с рекурсивным CTE
быстрее inline function с таблицей чисел.
Это очень странно.

повторил первый тест автора статьи, похоже на правду: на длинных строках SplitStrings_Numbers начинает существенно отставать. в таблице чисел не использовал сжатие, редакция не та
28 май 14, 16:39    [16086728]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
Что же, в большинстве случаев использование CLR показывает преимущество. Так что MS не особо ошибается. ;)
29 май 14, 11:12    [16089783]     Ответить | Цитировать Сообщить модератору
 Re: Выделить символы после определенного количества запятых  [new]
Crimean
Member

Откуда:
Сообщений: 13147
iap
Там утверждается, что mulistatement function с рекурсивным CTE
быстрее inline function с таблицей чисел.
Это очень странно.


почему странно? скалярные функции "особо злые" только когда они читают что-то из таблиц
если только банальный расчет - вполне себе терпимо работают
а вот инлайны, зачастую, план "сносят" очень неприятно
29 май 14, 13:01    [16090745]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить