쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다.
본문
안녕하세요?
질문을 어떻게 정리해야할지..ㅠㅠ

SELECT * FROM `cb_cmall_category` WHERE find_in_set ('강남구', cca_delivery)
이렇게하면

이렇게 찾습니다만..
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
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)
딱 떨어지는 단어가 명확하면 잉끼님의견이 맞는거같고
단어가 문장중간에 포함된 내용들이면 플라이 님의 견이 더 적합할것 같습니다.
하지만 저라면 플라이님의견의 패턴으로 처리할듯 싶네요
굳이 꼭 ("가","나","다") 로 저장할필요는 없어보여서..


이렇게 해볼려고합니다.
배달가능한 업체를 찾는게 주요 이유였는데..
제가 아무래도 첫질문은 구조적문제부터 잘못 발을 딛은것같습니다.
![]()
이렇게 하나만 집계됩니다.
저는 7,9,10,11이 집계되길 원하거든요..
그리고 귀한 시간 내주셔서 답변주신분들께 진심의 감사인사드립니다.
한분만 채택해야하는 안타까움이 있어서..
내공이 필요하신분은 따로 쪽지주시면 질문올리고 바로 채택드리겠습니다.