많은 수의 행을 쿼리할 때 LIKE 연산자의 대안은 무엇입니까?
P粉191610580
P粉191610580 2023-09-02 13:02:15
0
1
506
<p>다음과 같은 임의의 문자열을 저장하는 열이 있는 테이블이 있습니다. </p> <pre class="brush:php;toolbar:false;">example_id = qwhs77gt65g7*</pre> <p>이제 열의 일부 데이터에는 별표(*)가 표시되지만 다른 데이터에는 표시되지 않습니다. </p> <p>다음 항목을 선택해야 합니다. 저는 다음 검색어를 사용하고 있습니다: </p> <pre class="brush:php;toolbar:false;">example_tbl에서 example_id를 선택하세요. WHERE example_id LIKE '%*%'</pre> <p>이것은 일반적으로 문제가 되지 않지만 수백만 개의 행을 쿼리하고 있는데 제가 알 수 있는 바에 따르면 LIKE 연산자가 성능에 영향을 미치고 있습니다. 쿼리를 완료하는 데 몇 시간 정도 걸립니다</p> <p>제 질문은 LIKE 연산자의 대안이 무엇입니까?입니다. </p> <p>PS 별표는 항상 문자열 끝에 있습니다. 도움이 되었는지 잘 모르겠습니다</p>
P粉191610580
P粉191610580

모든 응답(1)
P粉063862561

당신이 "별표는 항상 끝에 있습니다"라고 언급했으므로 시도해 볼 수 있습니다

其中 example_id LIKE '%*'.

이렇게 하면 "*"로 끝나는 모든 값을 찾을 수 있습니다.

또는

은 테이블의 열에서 하위 문자열을 검색하는 것입니다.

이를 달성하는 한 가지 방법은 3개의 매개변수를 사용하는 instr() 함수를 사용하는 것입니다.

Syntax: instr(순위, 문자열, 하위 문자열)

랭킹:

  1. 정수 표현식, 첫 번째 해당 위치 제공 하위 문자열 검색은 문자열의 문자로 시작됩니다.
  2. 문자열: 문자열은 텍스트입니다.
  3. sub_string: 찾고 있는 하위 문자열 찾고있는. instr()을 찾을 수 없으면 0을 반환합니다. 성냥.

이제 이것을 테이블에 어떻게 적용할까요? instr() 함수는 x3이므로 적용이 간단하다.

: filter[ZCT] where instr(1,ALLOTEDTO,"Ram") 0.

여기서 1은 하위 문자열을 찾기 위한 시작 위치이고, ALLOTEDTO는 문자열로 구성된 열 이름이며, 마지막 매개 변수는 하위 문자열 자체입니다. 그러면 ALLOTEDTO 열에 하위 문자열 "Ram"이 포함된 테이블의 모든 레코드가 제공됩니다

이것은 다음과 같습니다.

ALLOTEDTO가 "%Ram%"와 유사한 ZCT에서 *를 선택하세요.

NOTE: Instr() 함수는 대소문자를 구분하므로 항상 대문자나 소문자 기능을 사용하세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿