|
|
|
Классификация строк
|
|||
|---|---|---|---|
|
#18+
Коллеги, Есть задача классифицировать массив строк. Проблема в том, что условие классификации не жесткое, то есть оно примерно в таком виде: условие вид строкистрока Like '%1%' and строка Like '%7%' вид строки 1строка Like '%2%' or строка Like '%55%' вид строки 2строка Like '%3%' вид строки 3строка = '567' вид строки 4строка in ('99';'22';'78') or строка Like '50%' вид строки 5 Как обычно решаются подобные задачи? Замечу, что пользователь сам хочет вводить условия. ПО - MS SQL (изменить нельзя), доп-компоненты нежелательны, но возможно использование Excel Сейчас все реализовано в виде очень большого представления с case-выражениями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 16:42 |
|
||
|
Классификация строк
|
|||
|---|---|---|---|
|
#18+
Критик, А зачем необходимо классифицировать массив строк? Может для этой задачи сделать форму-конструктор с условиями (AND, OR, <, >, =,...) куда пользователь добавляет поля (из списка) и пишет условия. Далее, синтаксический анализ (проверка на ошибки). Затем - динамический sql. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 17:07 |
|
||
|
Классификация строк
|
|||
|---|---|---|---|
|
#18+
КритикКак обычно решаются подобные задачи? Замечу, что пользователь сам хочет вводить условия. Раз пользователь хочет сам вводить условия - значит, нужна форма, где он будет описывать их в некоем более-менее удобном виде. Эта же форма должна будет не пропускать ошибки. Далее - в зависимости от специфики использования. Например, просто генерить на основании этих данных хранимую функцию "категория строки" и использовать её во вьюхе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 17:28 |
|
||
|
Классификация строк
|
|||
|---|---|---|---|
|
#18+
Я себе сделал визуальный сборщик любых WHERE конструкций. На рисунке "синтаксическое дерево". Получается хрень типа (iCustomerTypeID = 3000) AND ((sCustomerResidentFlag = 'Y') AND (((sCustomerRegistrationRevokeFlag = 'Y') AND (sCustomerExpiredFlag <> 'Y')) OR ((sCustomerRegistrationRevokeFlag = 'N') AND (sCustomerExpiredFlag <> 'N')) OR ((sCustomerRegistrationRevokeFlag = 'Y') AND (dtCustomerExpiredDate IS NULL)) OR ((sCustomerExpiredFlag = 'Y') AND (dtCustomerExpiredDate IS NULL)) OR ((sCustomerRegistrationRevokeFlag = 'N') AND (dtCustomerExpiredDate IS NOT NULL)) OR ((sCustomerExpiredFlag = 'N') AND (dtCustomerExpiredDate IS NOT NULL)))) AND ((1 = 1) OR (sCustomerName = '') OR (sCustomerFullName = '') OR (sCustomerReportName = '') OR (iCustomerRegistrationCode = 0)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 08:13 |
|
||
|
Классификация строк
|
|||
|---|---|---|---|
|
#18+
КритикСейчас все реализовано в виде очень большого представления с case-выражениями.Да, так и надо делать, генерить представление по вашей таблице с условиями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 08:27 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=46&tid=1541564]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
45ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 237ms |
| total: | 352ms |

| 0 / 0 |
