MySQL 변수값 IN() 검색? FIND_IN_SET() 함수 이용

2018. 12. 31. 12:30·Programing/MySQL
반응형

 

 

보통 아래와 같이 한개 필드에 여러 값을 검색할 경우 IN() 함수를 이용하여 검색한다.

-- sample1
SELECT * FROM tbl1 WHERE tbl1_idx IN(1,2)

 

 

아래와 같이 IN()들어가는 값이 사용자가 입력한것이 아닌 다른 테이블에서의 값을 이용해서 검색 하는 것이라면?

-- sample2
SELECT * 
,@rows_idx := (SELECT GROUP_CONCAT(tbl2_idx) FROM tbl2) -- return value: '1,2'
FROM tbl1 where tbl1_idx IN(@rows_idx)

 

위 쿼리는 얼핏보면 정상적인 결과 값이 표현되는 것 같지만 전혀 그렇지 않다.

왜일까?

 

sample1에서 검색하는 것은 "tbl1_idx IN(1,2)" 이고, 

sample2에서 검색하는 것은 "tbl1_idx IN('1,2')" 이다.

 

검색하는 값이 같아 보이나, 전혀다른 검색어이기 때문에 정확한 검색 결과 값을 기대하기 힘들다.

sample2도 sample1처럼 정확한 검색 결과 값을 가지고 싶다면 아래와 같이 FIND_IN_SET() 함수를 이용하면된다.

SELECT * 
,@rows_idx := (SELECT GROUP_CONCAT(tbl2_idx) FROM tbl2)
FROM tbl1 where FIND_IN_SET(tbl1_idx, @rows_idx)

 

FIND_IN_SET() 함수는 콤마로(,) 이루어진 구분자로 된 문자열을 검색할때 사용한다.

 

함수에 대해 좀더 자세히 알아보자면 아래 링크를 참조하자.

https://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php

 

반응형
저작자표시 비영리 동일조건 (새창열림)

'Programing > MySQL' 카테고리의 다른 글

MySQL에서 금액을 한글로 표기하는 방법  (1) 2025.05.01
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
'Programing/MySQL' 카테고리의 다른 글
  • MySQL 속도 측정을 위한 SQL_NO_CACHE
  • mysql strip_tags function / html 제거 후 검색
  • MySQL EXPLAIN 사용하여 Query 퍼포먼스 확인.
  • group_concat 다중 레코드를 한개 컬럼으로 출력.
Dongkkase
Dongkkase
개발자로 일하면서 부딪히는 문제풀이가 누군가에게 도움이 되길 바라며
    반응형
  • Dongkkase
    정집사의 개발로그
    Dongkkase
  • 전체
    오늘
    어제
    • All (444) N
      • 금융 (61) N
      • Programing (7) N
        • Algorithm (28)
        • API (2)
        • javascript (121)
        • CSS (6)
        • HTML (10)
        • PHP (15) N
        • JAVA (27)
        • JSP (17)
        • JSP 예제 (1)
        • IOS (1)
        • Android (1)
        • Sencha Touche (1)
        • bat file, cmd (0)
        • 디버깅 (2)
        • SQL (17)
        • MS-SQL (1)
        • MySQL (12)
      • Server (14)
        • Docker (1)
        • Windows (9)
        • Linux (3)
        • jeus (1)
      • Database (5)
      • IT 일반 (15)
      • 리뷰 (36)
        • Book (17)
        • 제품 (1)
        • 영화 소개 (11)
        • 음악 소개 (7)
      • 잡생각 (31) N
        • 회고 (2) N
        • 자료실 (6)
        • 낙서장 (12)
        • 위시리스트 (2)
        • WOW (1)
        • 덕 (1)
  • 인기 글

  • 최근 댓글

  • 태그

    IT·컴퓨터
    블로그
    Java
    It
    사고 싶은 책
    자바
    iT's MY LiFE
    자바스크립트유틸
    jsp
    js패턴
    SQL
    자바스크립트
    php
    읽고 싶은 책
    IT 관련
    디자인패턴
    기초
    위시리스트
    IT블로그
    JavaScript
  • hELLO· Designed By정상우.v4.10.3
Dongkkase
MySQL 변수값 IN() 검색? FIND_IN_SET() 함수 이용
상단으로

티스토리툴바