Table Name : IO_List
-------------------------------------
| KeyValue | RefValue
-------------------------------------
| a | 123456789012 ----> 정상
-------------------------------------
| b | @23456789012 ----> 정상
-------------------------------------
| c | @@@@56789012 ----> 정상
-------------------------------------
| d | @234567@@@@2
-------------------------------------
| e | 12@456789012
-------------------------------------
| f | 123456@@9012
-------------------------------------
| g | @@@@56@@9012
-------------------------------------
| h | @2345678@@@2
-------------------------------------
위와같이 테이블에 값이 들어 있습니다.
여기에서, a, b, c 와 같이 (정상이라 쓰여진 레코드)
가. @ 표시가 아예 없거나,
나. @ 표시가 맨 앞에 하나만 있거나,
다. 아니면 @ 표시가 앞에서 4개 연속으로 있거나..
이런 경우를 제외한 모든 경우 (d, e, f, g, h)를 Select 하고자 합니다.
RefValue 의 자료형은 Char 형이며 값은 무조건 12자리로 고정되어 있습니다....
이런 경우 어떻게 쿼리를 해야 하는지요..
순삼님 답변:
Create Table #A(KeyValue Char(1) Not Null Primary Key,RefValue Char(12))
Set NoCount ON
Insert #A Values('a', '123456789012')
Insert #A Values('b', '@23456789012')
Insert #A Values('c', '@@@@56789012')
Insert #A Values('d', '@234567@@@@2')
Insert #A Values('e', '12@456789012')
Insert #A Values('f', '123456@@9012')
Insert #A Values('g', '@@@@56@@9012')
Insert #A Values('h', '@2345678@@@2')
Select *
From #A A
Where Not Exists (Select KeyValue
From #A B
Where (Charindex('@',RefValue) < 1 OR
(RefValue Like '@%' And CharIndex('@',SubString(RefValue,2,11)) < 1) OR
(RefValue Like '@@@@%' And CharIndex('@',SubString(RefValue,5,8)) < 1)) And
A.KeyValue = B.KeyValue)
연욱님 답변:
오랜만에 순삼님 답글에 딴지걸게되어서 영광입니다. ^^;
채장훈님, 가능하다면 테이블을 한번만 읽고처리하는것이 좋으며
더군다나 상관하위쿼리구문의 경우는 되도록이면 피하는것이 좋습니다.
select *
from #a
where charindex('@',RefValue,2) > 0 and (left(RefValue,4) <> '@@@@' or charindex('@',RefValue,5) > 0)
이와같이 하셔도 동일한 결과가 나올듯...
출처 : sqler
p.s 역시 연욱님에 한방쿼리문이네요. ^^;
한 테이블읽고라...i/o 음.....
^^;
'SQL' 카테고리의 다른 글
| 심심풀이 3탄 (0) | 2007/06/07 |
|---|---|
| 심심풀이 4.5탄 (0) | 2007/06/07 |
| ASP에 날짜시간에서 시간 오전/오후 제거하고 시간 24.. (0) | 2007/06/07 |
| 심심풀이 1탄 (0) | 2007/06/07 |
| 심심풀이 2탄 (0) | 2007/06/07 |
| IO_List 연욱님에 한수 (0) | 2007/06/07 |




최근에 달린 댓글
링크
최근에 받은 트랙백
태그목록