like 와 INSTR 모두 말을 듣지 않습니다.

like 와 INSTR 모두 말을 듣지 않습니다.

QA

like 와 INSTR 모두 말을 듣지 않습니다.

본문

안녕하세요

 

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

3419630329_1705813227.8877.png


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

 

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

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


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 '%이상%';

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

 

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

 

서버 환경입니다.

  • 서버: Localhost via UNIX socket
  • 서버 타입: MariaDB
  • 서버 연결: SSL is not being used 문서
  • 서버 버전: 10.4.25-MariaDB - Source distribution
  • 제품 버전: 10
  • 사용자: root@localhost
  • 서버 문자셋: UTF-8 Unicode (utf8mb4)

어찌된 것일까요?

이 질문에 댓글 쓰기 :

답변 3

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

 

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


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 연산이 포함된 쿼리의 경우, 적절한 인덱스가 있는지 확인이 중요합니다.


SHOW INDEX FROM g5_write_ebook;

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

 

3. 


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

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

 

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

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

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

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


SELECT * FROM g5_write_ebook WHERE wr_subject = '단발 이상';

 

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


SELECT * FROM g5_write_ebook WHERE wr_subject like '%ㅇㅣㅅㅏㅇ%';

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1,509
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT