程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql中從字段URL中提取域名信息

Mysql中從字段URL中提取域名信息

日期:2017/1/12 12:26:52      編輯:關於MYSQL數據庫

如果你有一字段dm記錄了一個url,為了更好的優化模糊查詢速度或統計速度,在數據表原有的結構上增加3個字段,分別為

`sdm` varchar(64) NOT NULL, #subdomain記錄子域名,如:123456.user.qzone.QQ.com
`tdm` varchar(32) NOT NULL, #topdomain記錄一級域名,如:QQ.com
`rdm` varchar(8) NOT NULL, #rootdomain記錄根域,如:com

操作順序

# 1、為表增加字段
ALTER TABLE `tablename` ADD `sdm` varchar(64) NOT NULL, ADD `tdm` varchar(32) NOT NULL, ADD `rdm` varchar(8) NOT NULL;

# 2、提取url中的域名信息

UPDATE `tablename` SET `sdm`=SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(`dm`, '/', 3), '/', -1) ,':',1);

# 3、提取域名中的根域
UPDATE `tablename` SET `rdm`=(IF(`sdm` REGEXP '(com|tel|mobi|net|org|asia|me|tv|biz|cc|name|info)(\\.[a-zA-Z]{2})$', SUBSTRING_INDEX(`sdm`, '.', -2), IF(`sdm` REGEXP '([a-zA-Z]{2,4})$', SUBSTRING_INDEX(`sdm`, '.', -1), '')));

# 4、根據子域名和根域取一級域名

UPDATE `tablename` SET `tdm`=CONCAT(SUBSTRING_INDEX(TRIM(TRAILING `rdm` FROM `sdm`), '.', -2), `rdm`) ;

執行結果:
影響的數據欄: 126978

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved