안녕하세요.
SELECT 1 AS [IDX] , '' AS [W1] , '1' AS [W2] , '' AS [W3] , NULL AS [W4] , NULL AS [W5] , '' AS [W6] , '' AS [W7]
UNION ALL
SELECT 2 AS [IDX] , '' AS [W1] , '' AS [W2] , '' AS [W3] , NULL AS [W4] , NULL AS [W5] , '' AS [W6] , '' AS [W7]
이런 쿼리가 있을 때 저는 idx = 1 를 불러오고 싶습니다. ( 실제 테이블은 컬럼 수가 너무 많아서요. )
즉 W1~W7 컬럼의 값이 '' 보다 큰 컬럼이 하나라도 있으면 되는거고요.
'' OR NULL 만 있는 경우는 제외되는 건데요.
W1 > '' OR W2 > '' OR W3 > '' OR W4 > '' OR W5 > '' OR W6 > ''
이런식으로 OR 문을 계속 붙여 쓰는 방법밖에 없는가 하여~ 질문을 올립니다.~
SELECT COALESCE(w1, w2, w3, w4, w5, w6, w7)
FROM (
이렇게도 해보려고 하였으나 값 중에서는 NULL 있는것이 아니라 '' 도 있다보니 이도 쓸 수가 없네요.
혹시 좋은 방법 있으까요?
Comment 4
-
건우아빠
2015.02.05 14:47
-
더따뜻한
2015.02.05 15:23
데이터는 숫자가 들어가지만, 컬럼 타입은 VARCHAR로 되어 있어요. ^^
-
건우아빠
2015.02.05 21:01
drop table testgocreate table test( idx int ,w1 varchar(4) null ,w2 varchar(4) null ,w3 varchar(4) null ,w4 varchar(4) null ,wt as case when len(COALESCE(w1,'')+COALESCE(w2,'')+COALESCE(w3,'')+COALESCE(w4,'')) > 0 then 1 else 0 end)insert into test values (1,NULL,NULL,NULL,'')insert into test values (2,NULL,NULL,NULL,'4')insert into test values (3,'2',NULL,NULL,'')insert into test values (4,NULL,NULL,NULL,'2')insert into test values (5,NULL,'1',NULL,'')select *from test -
더따뜻한
2015.02.06 10:04
아.. 네... ^^ 문자열로 연결해서 해도 되겠네요 ^^ 감사합니다~
unpivot 으로 분리하신 다음 검색하시는 방법
원테이블 대신 트리거를 통해서 컬럼별로 분리되게 별도의 테이블로 저장하신 다음
이 테이블로 검색등을 처리 하시는것도 방법이 지 않을까요.
또한 컬럼의 값이 어떻게 되는지는 모르지만 계산 필드를 이용하실수도 있을듯...