쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다.

쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다.

QA

쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다.

본문

안녕하세요?

 

질문을 어떻게 정리해야할지..ㅠㅠ

 

 

1925979146_1541634705.3179.png

 

 

SELECT * FROM `cb_cmall_category` WHERE find_in_set ('강남구', cca_delivery)

 

이렇게하면 

 

1925979146_1541634824.737.png

 

이렇게 찾습니다만..

 

SELECT * FROM `cb_cmall_category` WHERE find_in_set ('강남구,마마', cca_delivery)

 

이렇게하면 0행으로 집계됩니다.

 

1개이상의 지역을 포함된 문자열 모두 찾아줬으면 좋겠는데..

 

find_in_set 의 찾으려는 문자열은 동적입니다.

 

'강남구' 하나 또는 '강남구,마포구' 또는 '강남구,마포구,은평구' 처럼 동적입니다.

 

도와주시면 감사하겠습니다.

 

 

 

이 질문에 댓글 쓰기 :

답변 10

하나의 쿼리문으로만 해결을 하시기 보다는 php 구분자를 분리하는 방식으로 해서 where like 문을 만들어서 like '%강남구%' or 방식으로 해서 쿼리문을 처리되도록 하시는게 좋을듯 합니다.

PHP로 처리할경우


<?php
$arrstr = array('강남구','마포구');
$sql_where = " where (1) ";
$i = 0;
foreach($arrstr as $key => $val) {
    if ($i == 0)
        $sql_where .= " ( ";
   else
        $sql_where .= " or ";
    $sql_where .= " cca_delivery like '%".$val."%' ";
    $i++;
}
if ($i == 0)
    $sql_where .= " ) ";
$sql = " select * from  `cb_cmall_category` ".$sql_where;
?>

 

와 같이 하면 되지 않을까요?

FIND_IN_SAET(칼럼명, "강남구,마포구,은평구")

이 순서가 아닐까요?

반대로 넣으신 것 같습니다.

find_in_set 설명을보면 해당위치의 번호를 반환한다고 되어 있습니다.

즉 cca_delivery 와 찾고자 하는 문자가 맞지 않기 때문에 0을 반환하는 듯 싶네요.

cca_delivery 와 찾고자 하는 문자를 정확히 일치시키면 되지 않을까 싶습니다.

 

참고 주소

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

http://skylove1982.tistory.com/388

답변주셔서 감사드립니다.
찾아야하는 파라미터는  하나만 가능한가보군요..
저는 "강남구,은평구,마포구" 이렇게 찾으려는 문자열이있다면.. 이중에 포함된 cca_delivery 가 있으면 집계하고싶은데
가능한 쿼리가 있을까요?

저도 쿼리고수가 아니라 잘 모르겠습니다.

다만 find_in_set 은 한 행만 리턴하는 쿼리 같습니다.
단순하게 찾기만 한다면 다중 like 를 사용하는게 좋을거 같구요.(단 데이터가 많거나 사용자가 많다면 좋지 않음)

또는 IN 절을 이용해 보는 건 어떨까요?

SELECT * FROM `cb_cmall_category` WHERE find_in_set(cca_delivery,'강남구,마마')

 

이렇게 넣으시면 됩니다.

SELECT * FROM `cb_cmall_category` WHERE find_in_set('강남구',cca_delivery) or find_in_set('마마',cca_delivery)

딱 떨어지는 단어가 명확하면 잉끼님의견이 맞는거같고

단어가 문장중간에 포함된 내용들이면 플라이 님의 견이 더 적합할것 같습니다.

 

하지만 저라면 플라이님의견의 패턴으로 처리할듯 싶네요

감사합니다.
후자쪽이 맞구요.
찾으려는 지역이 워낙에 많기도 하고 , 동적이기도해서..
찾으려는 지역을 배열로 해서 쿼리문을 만들어야겠네요..ㅠㅠ
쿼리문이 엄청길면 문제가 생길까요?
아니면..
(강남구,은평구,마포구)
찾으려는게 3개면
for문으로 배열수만큼 순회하면서
하나씩 찾는게 나으려나요?

엄청나게 긴 쿼리문을 만든다. vs 찾으려는 지역을 배열수만큼 순환하면서 쿼리집계한다.

굳이 꼭 ("가","나","다") 로 저장할필요는 없어보여서..

 

1925979146_1541638612.1912.png

 

1925979146_1541638643.2617.png

 

이렇게 해볼려고합니다.

 

배달가능한 업체를 찾는게 주요 이유였는데..

 

제가 아무래도 첫질문은 구조적문제부터 잘못 발을 딛은것같습니다.

 

 

 

그리고 귀한 시간 내주셔서 답변주신분들께 진심의 감사인사드립니다.

 

한분만 채택해야하는 안타까움이 있어서..

내공이 필요하신분은 따로 쪽지주시면 질문올리고 바로 채택드리겠습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 72
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT