2011-05-19 62 views
2

我想將「someSubdomainInfo.mydomain.com」的值更新爲「mydomain.com」(.com僅僅是一個例子,我想要抓住其他所有東西 - 基本上清潔子域名信息)更新MySQL(使用正則表達式?)

使用的思想^([AZ] *)?([A-ZA-Z0-9_-] [AZ])爲正則表達式(缺少域以a開頭數字,可能還有其他)

關於如何編寫相關更新語句的任何想法?

感謝,

編輯:我的問題再次找,看來我並沒有明確提出它。 我希望對所有域做這件事,而不是一個一個的域。 換句話說,我不知道什麼「mydomain.com」提前。

如果我導出到csv,我可以使用這個正則表達式替換爲\ 2(在EditPro文本編輯器上驗證),我正在尋找類似於在MySQL中直接穹頂的東西。

回答

0

RegExp在MySQL中仍然是主要的。它們適合匹配和比較,但沒有太多的替代品。

我的建議是使用String Functions

SELECT url_column, SUBSTRING(url_column, INSTR(url_column, '.mydomain.com') + 1)) FROM your_table; 

這將查找列值中的根域。如果發現它,它將只需要這部分字符串。否則,它會保留原始字符串。使用上面的SELECT聲明對其進行測試,並在爲模式調整後將其設置爲UPDATE

0

SUBSTRING_INDEX()最適合提取部分網址。

如果你知道域擴展名,你可以聰明,並防止意外更新。否則,您可以在該子句中使用regex,或者計算.的數目,以防止此更新修改您不想清除其子域的URL。

UPDATE test SET url = SUBSTRING_INDEX(url, '.', -2) WHERE SUBSTRING_INDEX(url, '.', -2) = 'mydomain.com';