2016-09-27 10 views
0

Сравнение двух значений, разделенных запятой, в sql, мы можем сделать это с помощью функций Split (три столбца также мы можем сделать!) Но возможно ли использование функций?Сравнение трех значений, разделенных запятыми, в SQL

Позвольте привести пример.

enter image description here

Запрос должен проверить следующие условия

(1) Выберите задачи из table- 1, который планируется. Но не в готовых или отклоненных столбцах.

(2) Возврат только обязательные задания

Использование разделения функциональности (UD функции) или перемещение курсора делает запрос более сложным и глотает время, как хорошо.

Есть ли альтернативное решение для этого? Возможно с одним запросом?

Заранее спасибо.

+0

mysql или sql-server? – Jens

+1

* это возможно * - Yep - помещать каждую из разделенных запятыми значений в свою собственную строку в другую таблицу, так оно и должно быть сделано. Текущий дизайн, скорее всего, станет кошмаром для поддержания. –

+0

@AlexK. Хорошо спасибо –

ответ

3

Нет никакой волшебной пули. Если вы действительно хотите повысить производительность, это может быть нормализовано (возможно, индексировано). Кроме того, более стандартные запросы будут работать без функции split.

В зависимости от конкретной ситуации это может быть иначе, но из того, что вы показываете, у меня будет таблица задач с одной строкой для каждой задачи, связанной с таблицей 1, которая, как представляется, является «заданиями» или «проектами», которые содержат много задач.

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

Если вы не можете нормализовать эти данные, то вы, вероятно, застряли с разделенными функциями. Есть статьи о том, как получить отличную производительность от функций разделения, при этом функции CLR будут работать довольно быстро.

+0

Серебряная пуля, такая классика ... это очень напоминает мне об этом сообщении: http://weblogs.asp.net/alex_papadimoulis/408925 – Hackerman