2012-03-12 33 views
17

Tôi nhận thấy rằng sẽ dễ dàng hơn nhiều nếu tôi có thể sửa đổi bảng khi được tạo, nhưng giả sử tôi không thể, tôi có một bảng như sau:chuỗi kết hợp mysql bắt đầu chuỗi trong bảng

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

Các giá trị trong bảng không phải là độ dài cố định. Tôi có một chuỗi để khớp như abffagpokejfkjs. Nếu đó là theo chiều ngược lại, tôi có thể làm

SELECT * from table where value like 'abff%' 

nhưng tôi cần phải chọn giá trị phù hợp với sự khởi đầu của một chuỗi được cung cấp.

Có cách nào nhanh chóng để thực hiện điều đó hay không cần phải sửa đổi thông qua bảng để tìm một kết quả phù hợp?

+0

Tôi không hiểu vấn đề. Bạn đang cố gắng trả lại giá trị nào? Tại sao bạn không chỉ sử dụng 'LEFT (giá trị, 4)' hoặc 'LIKE'? –

+0

Tôi không thể sử dụng LEFT vì tôi không biết có bao nhiêu ký tự kết quả - có thể là 1, có thể là 25. Có thể lặp qua tất cả các số nhưng không phát ra âm thanh nhanh. – Woody

Trả lời

34

Hãy thử điều này:

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

Lưu ý rằng điều này sẽ không sử dụng một chỉ số hiệu quả vì vậy nó sẽ được làm chậm nếu bạn có rất nhiều hồ sơ.

Cũng lưu ý rằng một số ký tự trong value (ví dụ: %) có thể được diễn giải bằng LIKE có ý nghĩa đặc biệt, điều này có thể không mong muốn.

Các vấn đề liên quan