개발 Q&A

제목 정규 표현식에 대해 궁금한점
글쓴이 느림보 작성시각 2012/02/10 16:43:32
댓글 : 5 추천 : 0 스크랩 : 0 조회수 : 20805   RSS
안녕하세요 느림보입니다

mysql 정규 표현식에 대해서 궁금한점이 있는데요

제가 where 절에 쓰이는 regexp에 대해서 공부중인데요

'|' 이게 or를 나타내는 거라고 하는데 and를 나타내는 구문은 없나요??

and를 나타내는구문은 찾아봐도 없는거 같더라구요....ㅜㅜ

좋은 답변 기다리고 있겠습니다..

ㅜㅜ 구글링을 해도 안나와요 ..
 다음글 정말 간단한 질문... (5)
 이전글 정해진 시간에 특정 작업을 하고싶습니다. 윈도우의 예약... (5)

댓글

한대승(불의회상) / 2012/02/10 17:18:49 / 추천 0
and 구문은 없는걸로 기억합니다.

그런데 and는 왜 필요하죠?

없어도 표현이 가능 한거 같은데요...

^a.*er$

a 로 시작하고  er로 끝나는 모든 문자열
느림보 / 2012/02/10 17:35:20 / 추천 0
에 그것이 checkbox를 이용해서 value들에 구분자를 줘서 한필드에 넣어 줬습니다...

이제 검색시에 이 value들을 이용해서 체크가 돼어있던것들만 빼오려고 하는데 그것이 잘안되서요

-->view
<input type="checkbox" name="a[]" value=1>
<input type="checkbox" name="a[]" value=2>
<input type="checkbox" name="a[]" value=3>

submit

-->controller
if($this->input->post('a))
  {
   $a .= implode("",$this->input->post('a'));
  }
하나의 필드에 넣음
1,2,3
1,2
1
1,3
요런식으루요

이 상태에서 1과2가 들어 있는 레코드를 뽑아 오려고 하는데 그것이 잘안되네요..ㅎ

1과 2두개 모두 충족상태여야 해서요;;ㅎ
느림보 / 2012/02/10 17:40:40 / 추천 0
좀더 말씀드리자면 1,2,3한자리숫자면 뽑아 오는 방법이 쉬운데

1,12,13이런식으로 두자리숫자를 포함해버리면 12,13 안에 있는 문자도 1로 받아버려서 

...1이 없어도 다 뽑아 오더라구요...ㅜㅜ
느림보 / 2012/02/10 17:48:57 / 추천 0
마구 찾아보니 한자리수로 인식하게 한게 ',\1,'이 방식이었습니다 결국 필드에 값을 넣을때

$pro_option = ",";
$pro_option .= implode(",'+',",$this->input->post('pro_option'));
$pro_option .= ","; 

이렇게 글의 앞뒤에도 구분자를 주었습니다... 이렇게 하니 한자리숫자로

데이터를 뽑아오는것은 성공을 했지요

이렇게 했더니 또다른 문제가 검색시에도 이체크박스를 이용해서 검색을 하도록 해놓았는데;;

체크박스가 하나만 체크되면 값이 잘 들어오지만 2개

이상이 체크되서 넘기면 식이 뒤죽박죽되서 나오더군요...
한대승(불의회상) / 2012/02/11 01:57:48 / 추천 0
느림보// 각각의 값을 특정 문자로 감싸면  like 검색으로 대치 가능할 것 같은데요.


아래처럼 하면 특정 문자로 값을 감쌀수가 있습니다.
$a = '{' . implode('},{', $this->input->post('a')) . '}'

이렇게 변환된 값을 DB에 입력하면
{1},{2},{3},{12},{13}

 아래와 같은 방법으로 원하는 조건의 데이타를 검색 할 수 있을것 같군요.
select * from table where col like '%{1}%{3}%'