2012-04-09 13 views
9

Tôi muốn tìm 4 từ đầu tiên và 4 từ cuối cùng sau từ khóa cụ thể từ cơ sở dữ liệu. Giả sử từ khóa là "Account" thì tôi muốn tìm 4 từ đầu tiên trước "Account" xuất hiện trong một dòng và 4 từ sau "Account" xuất hiện trong một dòng.Tìm 4 từ đầu tiên và 4 từ cuối cùng từ cơ sở dữ liệu sau các từ khóa cụ thể?

Hiện tại tôi đang sử dụng truy vấn này để tìm 20 ký tự đầu tiên và 20 ký tự cuối cùng sau từ khóa cụ thể.

SELECT 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD) - 20, 20) AS First20Char, 
SUBSTRING(line.WD, LOCATE('%Account%', line.WD)+LENGTH('a'), 20) AS Last20Char 
FROM `line` WHERE line.WD LIKE '%Account%' 
+0

Lỗi nào bạn nhận được khi bạn đang thực hiện truy vấn? Vui lòng ghi rõ chi tiết !! – NSExpression

Trả lời

1

SQL được gọi là * S * QL vì một lý do - bạn sẽ không có khả năng để làm điều gì đó tiên tiến này mà không có sự giúp đỡ của một ngôn ngữ lập trình trung gian --- trừ khi bạn muốn điều cần trở nên bừa bộn.

Câu trả lời ngắn gọn là bạn sẽ phải sử dụng UDF (hàm do người dùng xác định) để phân tách đầu tiên, sau đó phân tích chuỗi phân cách của bạn (trên dấu cách ''), sau đó bạn có thể áp dụng logic -4/+ 4 của mình.

Dưới đây là bài viết hay nhất trên ròng trên SQL UDFs để giúp bạn bắt đầu:

http://www.codeproject.com/Articles/7938/SQL-User-Defined-Function-to-Parse-a-Delimited-Str

Chúc may mắn!

PS - sẽ dễ dàng hơn nhiều nếu chỉ lấy +/- 30 chr của bạn, sau đó thực hiện phân tích cú pháp bên ngoài mặc dù =]. Nó có lẽ sẽ tiết kiệm được nhiều tài nguyên hệ thống hơn.

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