2016-09-27 4 views
0

sql에서 두 개의 쉼표로 구분 된 값을 비교하면 Split 종류의 함수를 사용하여 처리 할 수 ​​있습니다. (세 열도 가능합니다.) 하지만 함수를 사용하지 않고 가능합니까?SQL에서 세 개의 쉼표로 구분 된 값 비교

예를 들어 설명해 드리겠습니다.

enter image description here

쿼리는 다음과 같은 조건

을 확인해야

(1) 계획되어 테이블 - 하나의 작업을 선택합니다. 그러나 완료되지 않았거나 거부 된 열은 아닙니다.

(2) 더 복잡한 쿼리를 만드는 경우에만 분할 기능 (UD 기능) 또는 커서를 사용하여 필수 작업

를 반환하고 그것은뿐만 아니라 시간을 삼킨다.

이 작업을 수행하는 다른 해결책이 있습니까? 단일 쿼리가 가능합니까?

미리 감사드립니다.

+0

mysql 또는 sql-server? – Jens

+1

* 가능합니다 * - 네 - 쉼표로 구분 된 각 값을 다른 테이블의 자체 행에 넣으십시오. 이것이 수행되는 방식입니다. 현재 디자인은 악몽이 될 것입니다. –

+0

@AlexK 감사합니다. –

답변

3

아니요 마법 총알이 없습니다. 정말로 성능을 높이고 싶다면 정규화 될 수 있습니다 (색인이 생성되었을 수도 있음). 또한 더 많은 표준 쿼리가 분할 기능없이 작동합니다.

정확한 상황에 따라 다를 수 있지만 표시되는 것과 나는 여러 작업이 포함 된 '작업'또는 '프로젝트'인 것으로 보이는 table1과 관련된 모든 작업에 대해 하나의 행이있는 작업 테이블을 갖게됩니다.

테이블에있는 것만으로도 필수, 거부 및 완료에 대한 열이있는 계획된 작업임을 의미합니다.

이 데이터를 정규화 할 수없는 경우 분할 기능이있을 가능성이 있습니다. CLR 함수가 매우 빠르게 실행되는 것처럼 분할 함수에서 뛰어난 성능을 얻는 방법에 대한 기사가 있습니다.

+0

은색 총알 같은 고전 ...이 게시물에 대해 많이 생각 나게 : http://weblogs.asp.net/alex_papadimoulis/408925 – Hackerman