Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql заявка за извличане на домейни от URL адреси

Трябваше да комбинирам някои от предишните отговори, плюс малко повече хакерство за моя набор от данни. Това е, което работи за мен, връща домейна и всички поддомейни:

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

Обяснение (защото нетривиалният SQL рядко има смисъл):

SUBSTRING_INDEX(target_url, '/', 3) - премахва всеки път, ако URL адресът има протокол
SUBSTRING_INDEX(THAT, '://', -1) - премахва всеки протокол от THAT
SUBSTRING_INDEX(THAT, '/', 1) - премахва всеки път от THAT (ако нямаше протокол)
SUBSTRING_INDEX(THAT, '?', 1) - премахва низа на заявката от THAT (ако нямаше път или край / )

Тестови случаи:

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; 

Резултати:

'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. как да получа месец от дата в mysql

  2. Урок за MySQL:MySQL IN изявление (разширено)

  3. Как мога да създам приложение за Android с локална база данни MySQL?

  4. Коя версия е моят MySQL сървър?

  5. направи всички цели числа с автоматично увеличение с еднакъв брой цифри с водещи нули