2010-08-12 35 views

Trả lời

68

SELECT LEFT(field1,LOCATE(' ',field1) - 1)

Lưu ý rằng nếu chuỗi trong câu hỏi không chứa dấu cách, điều này sẽ trả về một chuỗi rỗng.

+6

+1 không biết về 'LEFT' – soulmerge

+4

Nó trả về 'chara' với dấu cách. Bạn cần giảm kết quả LOCATE nếu không cần dấu phân cách cuối cùng: SELECT LEFT (trường1, LOCATE ('', field1) - 1) – Enyby

+0

Điều này sẽ không hoạt động nếu trường chính của bạn không chứa khoảng trống. Chuỗi con sẽ trả về giá trị rỗng thay vì trả về toàn bộ chuỗi. Ví dụ: nếu trường của tôi chứa chuỗi con "chuỗi có thể-không-đúng-tên" chuỗi sẽ trả về không có gì thay vì "test-possible-incorrect-name". –

10

Bạn sẽ cần một số string operations cho điều đó. Giả sử mọi lĩnh vực có ít nhất một nhân vật không gian:

SELECT SUBSTR(field1, 0, LOCATE(' ', field1)) FROM your_table; 

cách tiếp cận an toàn:

SELECT IF(
    LOCATE(' ', field1), 
    SUBSTR(field1, 0, LOCATE(' ', field1)), 
    field1 
) FROM your_table; 
+0

+1 cho phiên bản an toàn, mặc dù không rõ kết quả sẽ được trả lại khi trường không chứa trống. – Mchl

+1

phải thay đổi 0 cho 1: 'SELECT SUBSTR (trường1, 1, LOCATE ('', field1)) TỪ your_table;' –

45

Dưới đây là một phương pháp khác hoạt động và có vẻ đơn giản hơn một chút. Nó sử dụng SUBSTRING_INDEX MySQL function. A 1 trả về mọi thứ trước khoảng trắng đầu tiên và -1 trả về mọi thứ sau khoảng trống cuối cùng.

này lợi nhuận 'Chara':

SELECT SUBSTRING_INDEX(field1, ' ', 1) 

'ters' này lợi nhuận:

SELECT SUBSTRING_INDEX(field1, ' ', -1) 

Chi tiết

Một giá trị tích cực sẽ tìm kiếm những nhân vật bạn đã xác định từ khi bắt đầu chuỗi và giá trị âm sẽ bắt đầu từ cuối chuỗi. Giá trị của số cho biết số lượng ký tự được chỉ định của bạn tìm kiếm trước khi trả về phần còn lại của chuỗi. Nếu ký tự bạn đang tìm kiếm không tồn tại, toàn bộ giá trị trường sẽ được trả về.

Trong trường hợp này, -2 sẽ trả về mọi thứ ở bên phải của không gian thứ hai đến cuối cùng, không tồn tại trong ví dụ này, vì vậy toàn bộ giá trị trường sẽ được trả về.

+2

Điều này cũng hoạt động, nếu có chuỗi, không có trống, ví dụ 'chara' cũng sẽ hoạt động. – bernhardh

+2

Điều này làm việc tuyệt vời khi nhận được phiên bản lớn + nhỏ của chuỗi phiên bản với các thành phần x.y.z. – thomthom

+2

Điều này hoạt động tốt nhất khi bạn muốn toàn bộ trường được trả về nếu không tìm thấy ký tự. – stephentgrammer

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