쿼리 뜻이 헷갈려서 질문드립니다. 0 3 1,274

by 메밀묵도토리묵 [SQL Query] mariadb dbeaver [2022.05.11 14:42:22]


SELECT

    CASE

      WHEN COUNT(*) > 0 THEN 'Y'

      ELSE 'N'

    END as is_dup

  FROM

    tb_web_role_bas

  WHERE 1=1

  and role_cd = '${strCheck(request.body.cond.role_cd)}

 

// 이 쿼리를 풀이하면 어떻게 되나요? 

혹시 뒤에 ${~~}부분이 뭔지 아시는 분 있으신가요?

by 마농 [2022.05.11 14:59:32]

$로 표현된 부분은 SQL 영역이 아닌 프로그래밍 영역으로
프로그램의 변수를 SQL에 대입하는 부분입니다.

의미를 살펴보면
변수에 입력된 role_cd 에 해당하는 자료가 테이블에 있으면 Y 없으면 N 을 조회
즉, 해당 자료가 존재하는지 확인하는 쿼리입니다.


by 메밀묵도토리묵 [2022.05.11 15:03:18]

'마농' 님 감사합니다^^ 혹시 END as is_dup는 저 코드 안에서 별다른 의미가 없는 건가요?


by 마농 [2022.05.11 15:17:23]

"END as is_dup" 만 따로 떼어 보시면 안되고
"CASE WHEN COUNT(*) > 0 THEN 'Y' ELSE 'N' END as is_dup" 이 하나입니다.
CASE ~ END 까지가 하나의 표현식이고 AS 는 앞의 표현식 결과에 대한 별칭을 부여한 것입니다.
http://gurubee.net/lecture/1028 <-- DECODE 와 CASE
http://gurubee.net/lecture/1018 <-- 예명(Alias)
http://gurubee.net/oracle/sql <-- Oracle SQL 기초 강좌

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