마농님이 짜신 쿼리를 보는 데 도저히 이해가 안 되어서 이렇게 질문을 드립니다ㅠㅠ 0 2 2,153

by ByTheGrace [Oracle 기초] Oracle sql [2019.07.03 22:00:48]


마농님이 짜신 쿼리를 보는 데 도저히 이해가 안 되어서 이렇게 질문을 드립니다ㅠㅠ

 

where ... LIKE '%'||bf1||'%' <<< 이 부분의 원리가 도대체 이해가 되지 않아 질문을 드립니다.

(물론 아래 쿼리 전체가 제게는 너무 버겁습니다.)

 

where '여러 개의 문자열' LIKE '%'||칼럼명||'%' 이렇게 해주었는데

'''어떻게 여러 개의 문자열 안에 있는 값들을 각각 일일히 비교해주는지'''

이 원리가 도저히 이해가 가지 않습니다ㅠㅠ

 

부디 이해할 수 있도록 설명해주실 수 있는 분 계실까요?ㅠㅠ

 

부디 부탁드리겠습니다, 감사드립니다.

 

 

WITH a AS

(

SELECT '01,02,03' af2 FROM dual

)

, b AS

(

SELECT '01' bf1, '간장' bf2 FROM dual

UNION ALL SELECT '02', '고추장' FROM dual

UNION ALL SELECT '03', '된장' FROM dual

UNION ALL SELECT '04', '춘장' FROM dual

)

SELECT bf2 FROM a, b  WHERE af2 LIKE '%'||bf1||'%';

by jkson [2019.07.04 08:39:40]

like 는 잘 알고 계시죠?

'01,02,03' like '%01%'  --> true

'01,'02,'03' like '%04%' --> false

요런 식을 아래와 같이 바꾼 거예요.

af2 like '%' || bf1 || '%'


by 마농 [2019.07.04 08:41:23]
-- 값을 대입해 보면
 WHERE '01,02,03' LIKE '%01%' --> true
 WHERE '01,02,03' LIKE '%02%' --> true
 WHERE '01,02,03' LIKE '%03%' --> true
 WHERE '01,02,03' LIKE '%04%' --> false

 

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