A테이블
gubun | reg_user |
01@02@05 | test1 |
B테이블
seq | gubun | reg_user | reg_date |
1 | 01 | test1 | 2021-08-25 |
2 | 02 | test1 | 2021-08-25 |
3 | 06 | test1 | 2021-08-25 |
안녕하세요.
B테이블을 A테이블의 구분값을 참조해서 조회하려고합니다.
예를 들어 B테이블에 06이 있는데 A테이블에는 06이 없어서 조회시 제외시키려고합니다.
구분자로 되어있을경우 조회를 어떻게하면되는지 답변부탁드립니다.!
FIND_IN_SET 함수는 처음 보네요.
위에 말씀하신 것과 달리 직접 테스트 해보니 001 과 01 을 정확하게 구별하네요.
다만, 구분자는 컴마(,) 여야만 히네요.
제가 예를 든 INSTR 의 경우는 001 과 01 을 구별하지 못합니다.
위 예시 자체가 코드값이 고정자리수인듯 하여 간략하게 표현했습니다.
가변 자리수인 경우엔 조건이 좀 더 복잡해지는데
FIND_IN_SET 함수를 이용하면 간편하겠네요.
SELECT b.* FROM a_table a INNER JOIN b_table b ON a.reg_user = b.reg_user AND INSTR(a.gubun, b.gubun) > 0 -- 고정 자리수 조건 AND INSTR(CONCAT('@', a.gubun, '@'), CONCAT('@', b.gubun, '@')) > 0 -- 가변 자리수 조건 AND FIND_IN_SET(b.gubun, REPLACE(a.gubun, '@', ',')) > 0 ;