我想将看似“someSubdomainInfo.mydomain.com”的值更新为“mydomain.com”(.com只是一个示例,我想抓住其他所有内容 - 基本上清理子域信息)< / p>
考虑使用^([az]。*。)?([a-zA-Z0-9 _-] 。[az] )作为RegExp(缺少以数字开头的域,可能是其他人)
关于如何编写相关更新声明的任何想法?
谢谢,
编辑:再次看我的问题,似乎我没有清楚地表达出来。 我希望在所有域中完成此操作,而不是在一个一个域中完成。 换句话说,我不知道“mydomain.com”是什么提前。
如果我导出到csv我可以使用这个正则表达式并用\ 2替换(在EditPro文本编辑器上验证),我正在寻找类似于直接在MySQL中使用圆顶的东西。
答案 0 :(得分:0)
RegExp仍然是MySQL的主要产品。它们有利于匹配和比较,但不是替代。
我的建议是使用String Functions。
SELECT url_column, SUBSTRING(url_column, INSTR(url_column, '.mydomain.com') + 1)) FROM your_table;
这将在列值中查找根域。如果找到它,它将只占用字符串的这一部分。否则,它将保留原始字符串。使用上面的SELECT
语句对其进行测试,并在为模式调整后将其设为UPDATE
。
答案 1 :(得分:0)
SUBSTRING_INDEX()最适合提取部分网址。
如果你知道域名扩展,你可以聪明并防止意外更新。否则,您可以在子句中使用regex,或计算.
的数量,以防止此更新更改您不想清除其子域的URL。
UPDATE test SET url = SUBSTRING_INDEX(url, '.', -2) WHERE SUBSTRING_INDEX(url, '.', -2) = 'mydomain.com';