쿼리문내에 특정구분자로 구분검색?? 0 6 566

by 날아라! [MySQL] [2018.12.17 08:33:00]


안녕하세요.

제목이 좀 이상한데요.

고객들의 정보가 들어가있는 교육신청 테이블이 있습니다.

검색을 시도하려고 하는데 해당컬럼에 데이터는 없는데 리스트에는 해당정보가 계속해서 노출이 되더군요.

테이블을 확인해니 ㅡㅡ;

사용자들이 신청한 교육내용들이 한 컬럼에 구분자를 이용해 등록이 되어있더라구요

테이터1^|^데이터2^|^(주)회사명^|^홍두깨^|^피부보호대 등^|^품질관리부^|^대리^|^^|^예 <--- 이렇게요.

근데 실질적으로 회사명만 검색을 하고싶은데 해당컬럼내에 있는 비슷한 명칭은 모두 검색이 되네요. (like를 이용하니...)

궁금한것은 구분자를 통해서 (주)회사명이라는 단어만 검색할수있는 방법이 있는지 궁금합니다.

by 마농 [2018.12.17 08:44:45]

항목의 위치가 고정이라면?(예 : 3번째는 회사명)
해당 위치만 잘라내어 사용하면 됩니다.

WITH t AS
(
SELECT '테이터1^|^데이터2^|^(주)회사명^|^홍두깨^|^피부보호대 등^|^품질관리부^|^대리^|^^|^예' contents
)
SELECT REPLACE(SUBSTRING_INDEX(SUBSTRING_INDEX(contents, '|', 3), '|', -1), '^', '') company_name
  FROM t
;

 


by 날아라! [2018.12.17 09:19:31]

답변감사합니다. 마농님..

검색어에서 검색했을경우 노출되는 부분이 도통 처리가 안되네요..


by 마농 [2018.12.17 09:57:36]

혼잣말 인가요?
아니면 질문인가요?
질문이라면 구체적으로 표현해 해주세요.


by 마농 [2018.12.17 10:46:32]

굳이 bbs 테이블을 한번 더 읽을 필요는 없습니다.
그냥 바로 조건을 주면 되고요.
작성하신 쿼리가 테이블을 두번 읽어 비효율적이긴 하지만 문제는 없어 보입니다.
결과가 안 나오는 이유는 다른데 있을 것 같네요?


by 마농 [2018.12.17 11:24:30]
AND SUBSTRING_INDEX(SUBSTRING_INDEX(contents, '|', 3), '|', -1) LIKE '%회사명%'

 


by 날아라! [2018.12.17 11:34:46]

답변감사합니다.

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