쿼리문 "가,나" 문자열 기준으로 "가" 포함된 행을 찾고싶습니다.
본문
안녕하세요?
질문을 어떻게 정리해야할지..ㅠㅠ
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)
딱 떨어지는 단어가 명확하면 잉끼님의견이 맞는거같고
단어가 문장중간에 포함된 내용들이면 플라이 님의 견이 더 적합할것 같습니다.
하지만 저라면 플라이님의견의 패턴으로 처리할듯 싶네요
굳이 꼭 ("가","나","다") 로 저장할필요는 없어보여서..
이렇게 해볼려고합니다.
배달가능한 업체를 찾는게 주요 이유였는데..
제가 아무래도 첫질문은 구조적문제부터 잘못 발을 딛은것같습니다.
그리고 귀한 시간 내주셔서 답변주신분들께 진심의 감사인사드립니다.
한분만 채택해야하는 안타까움이 있어서..
내공이 필요하신분은 따로 쪽지주시면 질문올리고 바로 채택드리겠습니다.