2013-07-23 40 views
5

Tôi gặp sự cố - Tôi cần tìm mọi cụm từ đơn lẻ như AbC (nhỏ b, giữa hai chữ cái viết hoa). Ví dụ: tuyên bố: Little John có ProBlEm và cần biết cách làm tHiS.Tìm chữ cái nhỏ giữa hai chữ cái viết hoa - MySQL

Tôi cần chọn ProBlEm và tHiS (bạn thấy, BlE và HiS, một chữ cái nhỏ ở giữa hai thủ đô). Làm cách nào tôi có thể chọn tùy chọn này?

+0

"Mỗi cụm từ duy nhất" ở đâu? Bất cứ nơi nào trong cơ sở dữ liệu của bạn? – Jon

Trả lời

1

Trong MySQL bạn có thể sử dụng một số nhị phân (để đảm bảo độ nhạy trường hợp) biểu thức chính quy để lọc đối với những hồ sơ có chứa một mô hình như vậy:

WHERE my_column REGEXP BINARY '[[:upper:]][[:lower:]][[:upper:]]' 

Tuy nhiên, nó không phải là quá đơn giản để trích xuất các đoạn mã khớp với mẫu như vậy từ bên trong MySQL. Một có thể sử dụng UDF, ví dụ: lib_mysqludf_preg, nhưng nó có thể là một nhiệm vụ phù hợp hơn để được thực hiện trong lớp ứng dụng của bạn. Trong cả hai trường hợp, biểu thức thông thường một lần nữa có thể giúp đơn giản hóa tác vụ này.

+0

Hãy nhận biết cảnh báo này từ [mysql manual] (http://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp): "Các toán tử REGEXP và RLIKE hoạt động theo kiểu byte-khôn ngoan , vì vậy chúng không an toàn nhiều byte và có thể tạo ra kết quả không mong muốn với các bộ ký tự nhiều byte. " – mabi

+0

Lỗi của tôi, mọi thứ đều hoạt động! CẢM ƠN! –

+0

Chỉ cần một chữ 'e' là đủ. – mabi

0

Trước hết bạn đã chia Chuỗi. Please refer this SO Question

và sau đó tìm kiếm mỗi từ retrive như

substring(word,2) LIKE '[A-Z]' COLLATE latin1_general_cs 
Các vấn đề liên quan