반응형
보통 아래와 같이 한개 필드에 여러 값을 검색할 경우 IN() 함수를 이용하여 검색한다.
아래와 같이 IN()들어가는 값이 사용자가 입력한것이 아닌 다른 테이블에서의 값을 이용해서 검색 하는 것이라면?
위 쿼리는 얼핏보면 정상적인 결과 값이 표현되는 것 같지만 전혀 그렇지 않다.
왜일까?
sample1에서 검색하는 것은 "tbl1_idx IN(1,2)" 이고,
sample2에서 검색하는 것은 "tbl1_idx IN('1,2')" 이다.
검색하는 값이 같아 보이나, 전혀다른 검색어이기 때문에 정확한 검색 결과 값을 기대하기 힘들다.
sample2도 sample1처럼 정확한 검색 결과 값을 가지고 싶다면 아래와 같이 FIND_IN_SET() 함수를 이용하면된다.
FIND_IN_SET() 함수는 콤마로(,) 이루어진 구분자로 된 문자열을 검색할때 사용한다.
함수에 대해 좀더 자세히 알아보자면 아래 링크를 참조하자.
https://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php
반응형
'Database > MySQL' 카테고리의 다른 글
MySQL 속도 측정을 위한 SQL_NO_CACHE (0) | 2021.09.08 |
---|---|
mysql strip_tags function / html 제거 후 검색 (1) | 2020.10.20 |
MySQL EXPLAIN 사용하여 Query 퍼포먼스 확인. (0) | 2016.09.13 |
group_concat 다중 레코드를 한개 컬럼으로 출력. (0) | 2013.07.15 |
MySQL - 초성검색 (0) | 2013.02.21 |
MySQL (0) | 2011.11.14 |
mysql 백업 및 복구 (0) | 2010.08.29 |
mysql query 날짜 차이 구하기 (0) | 2010.07.22 |