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

Откуда:
Сообщений: 298
Подскажите как выделить слово из текста.
Есть поле с типом nvarchar(256). К примеру данные в поле такие 'Коэффициенты d растяжения d301,d501 равны 301 и 501'. Как из этого стринга получить отдельно слова 'd301' и 'd501', string1 = 'd301' и string2 = 'd501'?
В строке комбинация d301,d501 может быть разная: d301,d501 и d301, d501 и d301 d501. В начале всегда идет латинская d и затем три или четыре цифры.
18 ноя 15, 17:18    [18436961]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Glory
Member

Откуда:
Сообщений: 104760
Scend
Как из этого стринга получить отдельно слова

Для того, чтобы из текста извлечь слова нужно знать, что является разделителем этих слов.
18 ноя 15, 17:22    [18436979]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Scend
Member

Откуда:
Сообщений: 298
Glory
Scend
Как из этого стринга получить отдельно слова

Для того, чтобы из текста извлечь слова нужно знать, что является разделителем этих слов.

Разделителей нет, есть только текст, и слова можно идентифицировать как:
"В начале всегда идет латинская d и затем три или четыре цифры."

А к примеру, если сделать разделители такого вида {d301},{d501}. Как извлечь слова?
18 ноя 15, 17:30    [18437039]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Glory
Member

Откуда:
Сообщений: 104760
Scend
Разделителей нет, есть только текст, и слова можно идентифицировать как:

Если разделителя нет, то как вот вы лично знаете, где заканчивается одно слово и начинается другое ?
И как об этом узнает сервер ?

Scend
А к примеру, если сделать разделители такого вида {d301},{d501}. Как извлечь слова?

Найти позиции всех разделителей и извлечь подстороки от-и-до
18 ноя 15, 17:35    [18437076]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Владислав Колосов
Member

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

вообще-то сервер не должен ничего ниоткуда выделять. Вы должны уже разделенные данные на него помещать. Это называется атомарностью и и относится к первой нормальной форме базы данных.
18 ноя 15, 17:51    [18437173]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Макбет
Member

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

пробелы тоже разделители
варианты:
1. разбить строку на части по разделителям пробел, запятая, точка и тд.
проверить части на совпадение шаблону по like
2. в цикле
с помощью partindex('%шаблон%', 'где ищем') находим первое вхождение шаблона
находим конец искомой подстроки, выделяем, исходную строку обрезаем слева до последнего символа найденной подстроки
новая итерация цикла
3. сделать метод CLR (C#), в котором с помощью regexp можно получить подстроки по любому шаблону
19 ноя 15, 09:44    [18439149]     Ответить | Цитировать Сообщить модератору
 Re: Выделить слово из текста  [new]
Scend
Member

Откуда:
Сообщений: 298
Спасибо!
Да с помощью partindex сделал, то что нужно было.
19 ноя 15, 17:48    [18442883]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить