none
Разбор по строк в MSSQL RRS feed

  • Вопрос

  • Здравствуйте.

    С SQL не сильно знаком, но требуется решить на нем такую задачу. Помогите, пожалуйста.

    У меня такая задача, есть файл на 1 млн строк, в каждой строке несколько слов, разделенных пробелами, кол-во слов в каждой строке варьируется от 1 до 10.

    Пример:

    служба вскрывания надежных замков в самаре
    экстренное вскрывание замков омск
    экстренное вскрывание замков в нижнем
    вскрывание вен

    Необходимо в SQL разобрать каждую строку по шаблону: есть 2 слова "вскрыван" и "замк", нужно сделать так, чтобы на выходи получилось 4 таблицы:

    1. Содержит в себе все слова, которые идет левее слова, которое содержит в себе "вскрыван";

    2. Содержит слова между словом, которые содержат в себе слова "вскрыван", и словом, содержащим "замк";

    3. Содержит слова справа от слова, содержащего в себе "замк";

    4. Все слова, которые не содержат в себе "вскрыван" и "замк".

    Например:

    Строка "служба вскрывания надежных замков в самаре"

    Слово "служба" уходит в таблицу 1, слово "надежных" - в таблицу 2, слова "в"  в "самаре" - в таблицу 3, в таблицу 4 попадают все слова "служба", "надежных", "в" и "самаре".

    Можно сделать такое?

    Спасибо все, кто откликнется.

    4 февраля 2016 г. 9:57

Ответы

  • Добрый день.

    Да, можно.

    1. Создаете временную (или постоянную) таблицу, в нее загружаете данные из файла. Как можно посмотреть здесь.

    2. Выбираете все строки которые вас интересуют. where [имя столбца] like '%вскрыван%замк%'

    3. Ну и вам нужно написать 4 инсерта на основе select из таблиц с указанным выше условием. В первых трех строковыми функциями (Pathindex, substring) вы вырезаете нужные вам части. Ну а четвертый insert будет собирать данные из трех первых таблиц.

    • Предложено в качестве ответа Liliya Muray 5 февраля 2016 г. 8:00
    • Помечено в качестве ответа ЖукMVP, Moderator 8 февраля 2016 г. 3:03
    5 февраля 2016 г. 6:04