2010-08-19 22 views

Trả lời

9

Trong MySQL, cụm từ thông dụng có thể khớp nhưng không trả lại dữ liệu.

Bạn có thể sử dụng SUBSTRING_INDEX:

SELECT SUBSTRING_INDEX('www.example.com', '/', 1) 

, tuy nhiên, nó không phải là giao thức an toàn tiền tố.

Nếu bạn đang sử dụng một kết hợp của tiền tố và không tiền tố URL 's, sử dụng này:

SELECT url RLIKE '^http://', 
     CASE 
     WHEN url RLIKE '^http://' THEN 
       SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 3), '/', -1) 
     ELSE 
       SUBSTRING_INDEX(url, '/', 1) 
     END 
FROM (
     SELECT 'www.example.com/test/test' AS url 
     UNION ALL 
     SELECT 'http://www.example.com/test' 
     ) q 
+1

nó chỉ là trở về http: –

+0

@ Alex: như tôi đã nói trong câu trả lời, nó không phải là giao thức an toàn tiền tố. – Quassnoi

0

Dựa trên những câu trả lời, tôi đến với một si giải pháp milar, nhưng nó đòi hỏi nhiều truy vấn.

SELECT SUBSTRING_INDEX(url,'/',1) FROM table WHERE url NOT REGEXP '^[^:]+://'; 
SELECT SUBSTRING_INDEX(url,'/',3) FROM table WHERE url REGEXP '^[^:]+://'; 

Truy vấn đầu tiên xử lý các URL không có tiền tố giao thức. Truy vấn thứ hai xử lý các URL có tiền tố giao thức. Xin lưu ý rằng những điều này không xử lý mọi URL hợp lệ, nhưng phải xử lý hầu hết các URL thích hợp.

0

CHỌN SUBSTRING_INDEX (SUBSTRING_INDEX ('http://www.domain.com/', ': //', -1), '/', 1);

Kết quả: www.domain.com

CHỌN SUBSTRING_INDEX (SUBSTRING_INDEX (SUBSTRING_INDEX ('http://www.domain.com/', ': //', -1), '/', 1), 'www.', -1);

Kết quả: domain.com

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