빈칸을 경우 SELECT 제외시키기 0 4 2,616

by db초보 [MySQL] mysql [2015.12.14 13:49:59]


dd테이블에서 aa,bb,cc필드가 있습니다

그런데 aa,bb,cc중 빈값이 들어가 있으면 select 에서 제외시키고 싶은데 어떻게 해야되나요??

SELECT aa, bb, cc FROM dd WHERE cc=''

이렇게 해봤더니 aa,bb,cc 필드가 다 나오고 값은 aa,bb나오고 cc는 빈칸으로 나옵니다

aa bb cc
11 22  

이럴경우 cc가 빈칸이므로 aa,bb필드하고 값만 나오게 쿼리를 만들고 싶습니다

aa bb
11 22

 

만일 bb가 빈칸이면

aa cc
11 33

위에처럼 bb필드는 안나오고 aa,cc만 나오게 하고 싶습니다

쿼리를 어떻게 만들어야되나요??

by 아발란체 [2015.12.14 14:18:06]

일반적으로 정해진 개수를 출력해야 합니다.

3개면 3개, 2개면 2개로요.

아니면 항목 1개만 출력하되 안에 "," 구분자로 1개 또는 N개를 출력 할 수 있습니다.

 

다이나믹 SQL를 통해 상황에 따라 결과 항목수를 다르게 할 수는 있지만, 특별한 경우가 아니라면 지양해야 할 방법입니다. 유지보수 노력이 보다 많이 필요로 하게 됩니다.


by db초보 [2015.12.14 14:22:41]

어떤걸 써야되는지 좀 알려주세요~. 저기서 어떤방향으로 가야되는지를 몰라서 진도가 안나가고 있습니다.


by 마농 [2015.12.14 14:38:05]

1. aa, bb, cc 모두 조회하는 방법
  -- 가장 쉽고 간편한 방법


2. 행을 로우 형태로 출력하는 방법
  - (구분, 값) 2개의 컬럼 형태로 (aa, 11), (bb, 22) 2줄 출력
  - UNPIVOT 기능을 활용


3. 위에서 질문한 방법으로 출력하는 방법
  - 동적SQL 을 사용해야 함


by 아발란체 [2015.12.14 14:38:50]

지금까지 프로젝트 경험상,

A, B, C중 값은 이중 항상 1개가 있다고 한다면, 굳이 관련 조건절을 두지 않고 조회 합니다.

그리고 어플리케이션 비지니스로직에서 합쳐서 출력 처리 합니다.

굳이 이런 로직을 DB단에 두어서 복잡한 SQL를 지향하는 것은 바람직 하지 않은 것 같습니다.

 

혹 A는 항상 값이 있고,

B, C 값이 동시 발생하지 않고 B 또는 C 값만 있는 형태라면,

레코드당 2개 항목 출력으로 약속하여 

SELECT a, CONCAT(b, c) FROM ... 해도 될 것 같습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입