Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Truy vấn Mysql để trích xuất miền từ url

Tôi đã phải kết hợp một số câu trả lời trước đó, cộng thêm một chút hack cho tập dữ liệu của mình. Đây là những gì phù hợp với tôi, nó trả về miền và bất kỳ miền phụ nào:

SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(target_url, '/', 3), '://', -1), '/', 1), '?', 1) AS domain

Giải thích (vì SQL không tầm thường hiếm khi có ý nghĩa):

SUBSTRING_INDEX(target_url, '/', 3) - loại bỏ bất kỳ đường dẫn nào nếu url có giao thức
SUBSTRING_INDEX(THAT, '://', -1) - loại bỏ bất kỳ giao thức nào khỏi THAT
SUBSTRING_INDEX(THAT, '/', 1) - loại bỏ bất kỳ đường dẫn nào khỏi ĐÓ (nếu không có giao thức)
SUBSTRING_INDEX(THAT, '?', 1) - loại bỏ chuỗi truy vấn khỏi ĐÓ (nếu không có đường dẫn hoặc dấu /)

Các trường hợp thử nghiệm:

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(target_url, '/', 3), '://', -1), '/', 1), '?', 1) AS domain
FROM ( 
    SELECT       'http://test.com' as target_url 
    UNION SELECT 'https://test.com' 
    UNION SELECT 'http://test.com/one' 
    UNION SELECT 'http://test.com/?huh' 
    UNION SELECT 'http://test.com?http://ouch.foo' 
    UNION SELECT 'test.com' 
    UNION SELECT 'test.com/one'
    UNION SELECT 'test.com/one/two'
    UNION SELECT 'test.com/one/two/three'
    UNION SELECT 'test.com/one/two/three?u=http://maaaaannn'
    UNION SELECT 'http://one.test.com'
    UNION SELECT 'one.test.com/one'
    UNION SELECT 'two.one.test.com/one' ) AS Test; 

Kết quả:

'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'one.test.com'
'one.test.com'
'two.one.test.com'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. lưu trữ mảng numpy trong mysql

  2. Phân tích cú pháp một chuỗi XML trong MySQL

  3. Làm thế nào trang web này sửa chữa mã hóa?

  4. DETERMINISTIC, NO SQL hoặc READS SQL DATA trong khai báo và ghi nhật ký nhị phân được bật

  5. Ghi các mục vào cơ sở dữ liệu MySQL trong Scrapy