Быстрый разбор строки - нужна идея...

Обсуждение технических вопросов работы с системами управления базами данных (СУБД), работе с языком SQL и скриптовыми языками.
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Быстрый разбор строки - нужна идея...

Сообщение Александр »

всем привет посоветуйте как красиво решить следующую задачу

у меня есть объект, у него есть миллион свойств - любые комбинации из которых я кодирую в строковом атрибуте т.е. генерю некий уникальный строковый id
например так

Код: Выделить всё

T00-14F01-15-00L02-14-15
здесь лежат 8 базовых свойств каждое из которых представлено 100 возможными вариантами

проблема в чем? - мне нужно в отчетах очень очень быстро анализировать данную строчку с целю фильтрации ее как по отдельному свойству так и по комбинации свойств

грубо говоря
-имеем фиксированную строку
-знаем в какой позиции лежит то или иное свойство
-знаем его длину (в данном случае 2 символа)

нужно допустим сделать выборку по двум из них
я хочу сделать что то типа наложения/пересечения с шаблоном

типа

Код: Выделить всё

...
where
...
atrib.value XOR 'XXXXXXX__XXXXXXX__XXXXXX' =XXXXXXX01XXXXXXX02XXXXXX
конечно выглядит дико - но мне нужно именно что-то в этом духе
причем где лучше разбирать строку или на сервере в чистом SQL или на клиенте в LotsiaSQL непонятно :wink: а как непонятно вообще :wink: :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Попробуй like c его групповыми символами

Код: Выделить всё

...value like '_______01_______02%'
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

к сожалению не пойдет - символ _ означает любой символ строки и соответственно по шаблону

Код: Выделить всё

...value like '_______01_______02%'
я получу много мусора

если бы в SQL были бы регулярные выражения....

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

а что если так
т.е. выбирать свойства не по позициям а именовать их и работать по имени т.е. вместо

Код: Выделить всё

T00-14F01-15-00L02-14-15
сделать

Код: Выделить всё

T00-14F01a15b00L02c14d15
и делать выборку

Код: Выделить всё

... value like 'F01'
    and
... value like 'L02'   
хотя тоже не очень красиво выглядит.....
что скажешь?

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Disillusioned
Активный участник
Сообщения: 420
Зарегистрирован: 15 июл 2004, 15:12
Используемое ПО: Lotsia PDM PLUS
Откуда: Подольск
Контактная информация:

Сообщение Disillusioned »

Если честно, не понял чем не устраивает мой пример (первые 7 символов все равно какие, 8и9='01', следующие 7 символов все равно какие, 17и18='02', следующие символы все равно какие). Чем не выборочная фильтрация по двум параметрам, записанным в 8,9 и 17,18 позициях?
Ах и с ними невозможно
И без них никак нельзя
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

слушай :wink: меня переклинило - пятница наверное

Код: Выделить всё

select my.value as path
  from my.maind
 where my.value LIKE  'пора на море... ' and my.value not LIKE  'нужно работать... '


короче LIKE - то что нужно СПАСИБО :wink:

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Ответить