테스트 사이트 - 개발 중인 베타 버전입니다

like 와 INSTR 모두 말을 듣지 않습니다. 채택완료

평상심NZ 1년 전 조회 2,994

안녕하세요

 

아래 테이블의 조회가 이상합니다.

http://sir.kr/data/editor/2401/3419630329_1705813227.8877.png" width="100%" />

</p>

<p>SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM g5_write_ebook WHERE ((INSTR(wr_subject, '이상')) ) and (wr_num between -81 and (-81 + 10000))</p>

<p>

 

코드의 결과가 3인 아닌 '1'이 나옵니다.

like를 사용해 보아도 마찬가지입니다.

</p>

<p>SELECT COUNT(*) AS `cnt` FROM g5_write_ebook WHERE INSTR(wr_subject, '이상');

SELECT COUNT(*) AS `cnt` FROM g5_write_ebook WHERE wr_subject like '%이상%';

SELECT * FROM g5_write_ebook WHERE wr_subject like '%이상%';</p>

<p>

모두 1이거나 하나의 row만 나옵니다.

 

테이블의 인코딩은 utf8_general_ci 입니다.

 

서버 환경입니다.

  • 서버: Localhost via UNIX socket
  • 서버 타입: MariaDB
  • 서버 연결: SSL is not being used http://localhost/phpmyadmin/doc/html/setup.html#ssl" target="documentation">문서http://localhost/phpmyadmin/themes/dot.gif" title="문서" />
  • 서버 버전: 10.4.25-MariaDB - Source distribution
  • 제품 버전: 10
  • 사용자: root@localhost
  • 서버 문자셋: UTF-8 Unicode (utf8mb4)

어찌된 것일까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

원하시는 답변이 될지는 모르겠지만 다음을 참고 하셔서 검토해 보시는건 어떨까 합니다.

 

1. g5_write_ebook 테이블에서 해당 조건에 맞는 데이터가 실제로 있는지 확인

</p>

<p>SELECT * FROM g5_write_ebook WHERE INSTR(wr_subject, '이상') AND (wr_num BETWEEN -81 AND (-81 + 10000));

'이상'이 포함된 wr_subject를 가진 데이터가 존재하는지 확인해보세요.

이때, wr_num 조건도 함께 적용합니다.

 

2. 인덱스 확인

g5_write_ebook 테이블의 인덱스 상태를 확인해 보세요.

INSTR 함수나 LIKE 연산이 포함된 쿼리의 경우, 적절한 인덱스가 있는지 확인이 중요합니다.

</p>

<p>SHOW INDEX FROM g5_write_ebook;

만약에 인덱스가없다면 인덱스를 추가해 보세요

 

3. 

</p>

<p>SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM g5_write_ebook WHERE INSTR(wr_subject, '이상') AND (wr_num BETWEEN -81 AND (-81 + 10000));

COUNT 결과가 예상과 일치하는지 확인할 수 있습니다.

 

만약 에러가 있다면 어떠한 에러가 출력되는지 확인해 보시고 적절한 조치를 하시면 되지  않을까 합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

평상심NZ
1년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

1년 전

실제 데이터가 있는 위치와 확인하는 서버의 위치가 다를 경우의 상황이 있겠지만

그렇지 않을 경우 단순하게 equal 검색 했을때 결과가 나오지 않는다면

한글 조합형 이슈가 아닐까 싶습니다.

</p>

<p>SELECT * FROM g5_write_ebook WHERE wr_subject = '단발 이상';</p>

<p>

 

또는 다음처럼 강제 조합형태 검색을 통해 문제 확인을 해볼수 있을것 같습니다.

</p>

<p>SELECT * FROM g5_write_ebook WHERE wr_subject like '%ㅇㅣㅅㅏㅇ%';</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

평상심NZ
1년 전
님의 말씀이 맞네여. ㅠㅠ
그런데 이거 어떻게 수정하는지, 눈에는 제대로 보이는데 말입니다.
테이블 다운로드 받아서 열어보니, 일부가 펼쳐져 있습니다,

최근 맥북을 사용하고 있는데, 그걸까요?

댓글을 작성하려면 로그인이 필요합니다.

세크티
1년 전

결과는 phpmyadmin에서 찍어보신건가요?아니면 php코드에서 fetch로 보신건가요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

평상심NZ
1년 전
감사합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인