like 또는 instr 셀렉트할때 중복문자열 처리방법? 정보
like 또는 instr 셀렉트할때 중복문자열 처리방법?관련링크
본문
분류다중선택스킨 마무리 작업중인데 " 감 " 따라서 감자,구운감자 모두 올라오네요.
분류에 중복 문자열을 가지고 있는경우 처리방법에서 구분된 특정단어만 비교해서 셀렉트하는 방법이 있을까요?
ca_name 필드에 " 감,감자,구운감자 " 처럼 , 로 구분 입력된 경우입니다.
//분류정렬
//ca_name 필드속성 및 속도관련 체크 필요
//or ca_name like '%" . $sca . "%' 또는 or instr( ca_name, '" . $sca . "') 사용
$tmp = "";
$tmp = (isset($sca))?" or instr( ca_name, '" . $sca . "')":" ";
$sql_search .= " " . $tmp . " and (wr_num between '" . $spt . "' and '" . ($spt + $config[cf_search_part]) . "') ";
분류에 중복 문자열을 가지고 있는경우 처리방법에서 구분된 특정단어만 비교해서 셀렉트하는 방법이 있을까요?
ca_name 필드에 " 감,감자,구운감자 " 처럼 , 로 구분 입력된 경우입니다.
//분류정렬
//ca_name 필드속성 및 속도관련 체크 필요
//or ca_name like '%" . $sca . "%' 또는 or instr( ca_name, '" . $sca . "') 사용
$tmp = "";
$tmp = (isset($sca))?" or instr( ca_name, '" . $sca . "')":" ";
$sql_search .= " " . $tmp . " and (wr_num between '" . $spt . "' and '" . ($spt + $config[cf_search_part]) . "') ";
댓글 전체
디비 성능이 민감한 것이라면 테이블을 별도로 하나 더 쓰는 것을 권합니다.
게시물 갯수가 많지 않다면야
ca_name에 넣을 때 각 단어가 ,로 구분할 텐데
맨 처음부터 ,로 시작하고 끝에도 ,로 끝난다면
비교할 때 ca_name like '%,$sca,%'
instr( ca_name, ',$sca,')
가 되면 정확한 단어만 고를 수 있습니다.
게시물 갯수가 많지 않다면야
ca_name에 넣을 때 각 단어가 ,로 구분할 텐데
맨 처음부터 ,로 시작하고 끝에도 ,로 끝난다면
비교할 때 ca_name like '%,$sca,%'
instr( ca_name, ',$sca,')
가 되면 정확한 단어만 고를 수 있습니다.
정확한건 테스트를 해봐야 겠으나, 아래 쿼리를 테스트 해보십시오.
// 컬럼값이 특정 구분자(아래에는 콤마(,))를 가지고 있고, 정확히 일치하는 문자열만 찾고자 할 때 (검색어가 영문이나 숫자만 해당된다면 binary 는 삭제하십시오.
ca_name regexp binary '.*[,]?$sca[,]?.*'
// 컬럼값이 특정 구분자(아래에는 콤마(,))를 가지고 있고, 정확히 일치하는 문자열만 찾고자 할 때 (검색어가 영문이나 숫자만 해당된다면 binary 는 삭제하십시오.
ca_name regexp binary '.*[,]?$sca[,]?.*'
답변 감사드립니다.
정규표현식 부분은 좀더 공부해보겠습니다.^^
관심 가져주셔서 고맙습니다.
정규표현식 부분은 좀더 공부해보겠습니다.^^
관심 가져주셔서 고맙습니다.
두분 답변 고맙습니다.
먼저 입력할때 , 으로 앞뒤로 감싸주는것부터 해주어야 되겠군요.
삽질후 보고 드리겠습니다.^^;
먼저 입력할때 , 으로 앞뒤로 감싸주는것부터 해주어야 되겠군요.
삽질후 보고 드리겠습니다.^^;
주의할 것은 ca_name에 값을 넣을 때 ,를 맨 앞과 맨 뒤에 하나씩 더 넣어 주어야 합니다.0
고맙습니다.
$ca_name= implode(',', $multi_ctg);
$ca_name = "," . $ca_name . ",";//분류정렬을 위해 앞뒤에 , 찍어줌
$sql = " update " . $g4['write_prefix'] . $bo_table . " set ca_name='$ca_name' where wr_id='$wr_id'";
sql_query($sql);
그리고
instr( ca_name, '," . $sca . ",')
이런식으로 했는데 잘 되는것 같습니다.
뷰페이지에서 보여줄때 맨앞뒤 ,를 제거해주기만 하면 될듯 합니다.
if ($is_category){
echo ($category_name ? "[$view[ca_name]] " : "분류없음");
}
$view[ca_name]
,풍경,칼라,갯골, => 풍경,칼라,갯골
나중에 별도 테이블로 구현하는 방법에 대한 일강 부탁드립니다.^^
$ca_name= implode(',', $multi_ctg);
$ca_name = "," . $ca_name . ",";//분류정렬을 위해 앞뒤에 , 찍어줌
$sql = " update " . $g4['write_prefix'] . $bo_table . " set ca_name='$ca_name' where wr_id='$wr_id'";
sql_query($sql);
그리고
instr( ca_name, '," . $sca . ",')
이런식으로 했는데 잘 되는것 같습니다.
뷰페이지에서 보여줄때 맨앞뒤 ,를 제거해주기만 하면 될듯 합니다.
if ($is_category){
echo ($category_name ? "[$view[ca_name]] " : "분류없음");
}
$view[ca_name]
,풍경,칼라,갯골, => 풍경,칼라,갯골
나중에 별도 테이블로 구현하는 방법에 대한 일강 부탁드립니다.^^
맨앞,뒤 쩜(,) 좀 빼주세요.^^
$view[ca_name]
,풍경,칼라,갯골, => 풍경,칼라,갯골
한번에 처리 가능할것 같은데 영 문맹이라서 빠지긴 빠집니다만, 억지쓰고 있습니다. ㅠㅠ
$ca_name = preg_replace("`^(,)`", "", preg_replace("`(,)$`", "", $view['ca_name']));
$ca_name = preg_replace("(^,)", "", preg_replace("(,$)", "", $view['ca_name']));
$view[ca_name]
,풍경,칼라,갯골, => 풍경,칼라,갯골
한번에 처리 가능할것 같은데 영 문맹이라서 빠지긴 빠집니다만, 억지쓰고 있습니다. ㅠㅠ
$ca_name = preg_replace("`^(,)`", "", preg_replace("`(,)$`", "", $view['ca_name']));
$ca_name = preg_replace("(^,)", "", preg_replace("(,$)", "", $view['ca_name']));
언능 숙제 끝내시고 보여주세욧....넹..?
스킨 작업 해야는데 농땡이 피우는 천상재회의 억지부리기....호호호~~**
스킨 작업 해야는데 농땡이 피우는 천상재회의 억지부리기....호호호~~**
어제 말나온김에 들여다보다 거시기를 발견하는 통에 그만 삽자루를 다시.. ㅋㅋ
중요부분은 되었고 표시부분에서,,
억지로 됩니다만 정석이 아닌듯해서 ,,,,,,,
컨닝에는 아무래도 한계가 있기마련인가 봅니다.
그만 맘마먹고 ♨ 좀 식히고 오겠습니다. 호호호~~** ;
중요부분은 되었고 표시부분에서,,
억지로 됩니다만 정석이 아닌듯해서 ,,,,,,,
컨닝에는 아무래도 한계가 있기마련인가 봅니다.
그만 맘마먹고 ♨ 좀 식히고 오겠습니다. 호호호~~** ;
이게 정석인듯~!!
시작할때 , 끝에 , 제거
$ca_name = preg_replace("`(^,|,$)`", "", $view['ca_name']);
시작할때 , 끝에 , 제거
$ca_name = preg_replace("`(^,|,$)`", "", $view['ca_name']);