콤마로 구분되어있는 데이터 검색을 어떻게 해야할 까요..? 0 4 314

by 통합문서 [SQL Query] [2018.01.04 18:27:06]


MSSQL에서 사용자 권한 값으로 문서 권한테이블을 검색하려고 하는데 쉽지 않네요.

예를들어 사용자 권한값이 콤마로 (1,2) 라고 할때

[문서 권한 테이블 데이터]

문서1 0,1,2,9
문서2 0,1,2
문서3 0,1,3
문서4 0,2

결과 목록으로 문서1, 문서2, 문서4 가 나와야 합니다. 단순 like검색으로는 문서1,문서2 밖에 나오질 않으니... 어떻게 해야할까요?
 

 

by 마농 [2018.01.04 18:36:21]

조건으로 들어오는 사용자 권한 (1,2) 의 형태도 컴마로 구분된 문자열인가요?


by 통합문서 [2018.01.05 08:48:02]

앗.. 확인이 늦었네요; 네 맞습니다.


by 마농 [2018.01.04 19:01:14]

권한코드 자리수는 1자리 라고 가정.

WITH emp AS
(
SELECT '사원1' empno, '1,2' v
UNION ALL SELECT '사원2', '0,9'
)
, doc AS
(
SELECT '문서1' docno, '0,1,2,9' v
UNION ALL SELECT '문서2', '0,1,2'
UNION ALL SELECT '문서3', '0,1,3'
UNION ALL SELECT '문서4', '0,2'
UNION ALL SELECT '문서5', '0,3'
)
SELECT *
  FROM emp e
 INNER JOIN doc d
    ON d.v LIKE CONCAT('%[', REPLACE(e.v, ',', ''), ']%')
 WHERE e.empno = '사원1'
;

 


by 통합문서 [2018.01.05 08:49:04]

아..감사합니다.(__) concat함수로.. [ ] 로 감싼거는 정규표현식을 뜻하는건가요? 

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