2012-03-12 5 views
17

테이블을 만들 때 수정할 수 있지만 테이블을 만들 수 없다는 것을 알고 있습니다.테이블의 문자열 시작 부분에 mysql 일치 문자열이 있습니다.

abcd 
abde 
abdf 
abff 
bbsdf 
bcggs 
... snip large amount 
zza 

표의 값은 고정 길이가 아닙니다. abffagpokejfkjs와 (과) 일치시킬 문자열이 있습니다. 는 다른 방법으로 라운드 있었다면, 내가

SELECT * from table where value like 'abff%' 

할 수 있지만 제공되는 문자열의 시작과 일치하는 값을 선택해야합니다.

빠른 작업이 가능한가, 아니면 일치하는 것을 찾기 위해 테이블을 통한 반복이 필요합니까?

+0

나는이 문제를 이해하지 못한다. 어떤 가치를 돌려 주려고하십니까? 왜 'LEFT (value, 4)'또는 'LIKE'만 사용할 수 있습니까? –

+0

결과가 얼마나되는지 모르기 때문에 LEFT를 사용할 수 없습니다. 1 일 수도 있고 25 일 수도 있습니다. 모든 숫자를 반복 할 수는 있지만 빠르게 울리지는 않습니다. – Woody

답변

34

이 시도 : 당신이 기록의 많은 경우가 느려질 수 있도록이 효과적으로 인덱스를 사용하지 않습니다

SELECT col1, col2 -- etc... 
FROM your_table 
WHERE 'abffagpokejfkjs' LIKE CONCAT(value, '%') 

하는 것으로.

value (예 : %)에있는 일부 문자는 LIKE에서 바람직하지 않은 것으로 해석 될 수 있습니다.

관련 문제