Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Нужно распарсить строку средствами MsSQL

19K
03 июня 2007 года
Levi
35 / / 11.05.2007
Можите пример Распарсировки в МсСКЛ привести, например для такой строки
В таблице есть строка вида:
Директор Иванов Иван Иванович
Можно ли "легким движением руки" встваить ее в эту же таблицу, чтобы получилось следующее (т.е. несколько записей)

Должность Фамилия Имя Отчество
------------- ------------ --------- --------------
Директор Иванов Иван Иванович

пример в виде процедуры в МсСКЛ сервере если можно приведите.
Кроме этих данных в таблице хранится еще информация:
Название Сотрудники Адрес
Все требуют распарсировки, я создал еще одну пустую таблицу в которой хранятся все необходимые поля, куда нужно будет производить распарсировку, всех значений...причем этих значений достаточно много....ИД должен сохранятся...
7.8K
03 июня 2007 года
Hrew
185 / / 23.04.2007
Цитата: Levi
Можите пример Распарсировки в МсСКЛ привести, например для такой строки
В таблице есть строка вида:
Директор Иванов Иван Иванович
Можно ли "легким движением руки" встваить ее в эту же таблицу, чтобы получилось следующее (т.е. несколько записей)

Должность Фамилия Имя Отчество
------------- ------------ --------- --------------
Директор Иванов Иван Иванович

пример в виде процедуры в МсСКЛ сервере если можно приведите.


Точный пример привести не смогу, поскольку MSSQL установленного не имею, поэтому приведу примерный набросок:

Код:
//объявляем нужные переменные
DECLARE @dolgnost, @surname, @name, @midname VARCHAR(30);
DECLARE @remainder_text TEXT;
DECLARE @position INTEGER;
SET @remainder_text ="Директор Иванов Иван Иванович";

//находим первый пробел
SET @position = CHARINDEX(' ', @remainder_text);

//разделяем строку на должность и все остальное
SET @dolgnost = LEFT(@remainder_text, @position-1);
SET @remainder_text = RIGHT(@remainder_text, @position+1);

//выделяем фамилию
SET @position = CHARINDEX(' ', @remainder_text);
SET @surname = LEFT(@remainder_text, @position-1);
SET @remainder_text = RIGHT(@remainder_text, @position+1);

//аналогично находим имя и отчество
//запросом INSERT вставляем полученные значения куда надо


Вместо LEFT и RIGHT можно использовать SUBSTRING. Описание всех использованных функций можно найти на здесь

Цитата: Levi

Кроме этих данных в таблице хранится еще информация:
Название Сотрудники Адрес
Все требуют распарсировки, я создал еще одну пустую таблицу в которой хранятся все необходимые поля, куда нужно будет производить распарсировку, всех значений...причем этих значений достаточно много....ИД должен сохранятся...


Чтобы обработать всю таблицу, используйте курсоры (пример, см. пример В). Нужно выбрать значения каждой строки в соответствующие переменные, затем распарсить те переменные, которые этого требуют. Полученный набор переменных использовать в INSERT.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог