mysql – 使用正则表达式选择字段的一部分
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – 使用正则表达式选择字段的一部分,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1441字,纯文字阅读大概需要3分钟。
内容图文
![mysql – 使用正则表达式选择字段的一部分](/upload/InfoBanner/zyjiaocheng/898/5596ae3af8e04c7f91ed671c365dab15.jpg)
我有一个表格,第三方组件存储网址,我想从这个网址只获取id参数.
使用PHP我可以这样做:
$subject = "index.php?option=com_content&catid=2&id=456&view=article"; //mysql query result
$pattern = '*[&?]id=([0-9]+)*'; //matches either ?id=456 or &id=456
preg_match($pattern, $subject, $matches);
echo $matches[1];//prints 456
匹配的数字将是新查询的一部分:
SELECT name FROM table1 WHERE id=the_match
现在,我认为通过mysql直接执行它会快得多
SELECT name FROM table1 WHERE id = (SELECT REGEX_MATCH('*[&?]id=([0-9]+)*', '$1') FROM table2 WHERE uniquefield1 = 'fred')
显然SELECT REGEX_MATCH(‘* [&?] id =([0-9])*’,’$1′)FROM table2 WHERE uniquefield1 =’fred’)是完全发明的,只是说我要选择第一个从正则表达式匹配的组,并使用它来使WHERE子句工作.
有可能用MySQL做这样的事情吗?
解决方法:
没有,伤心地说,MySQL没有办法正则表达式应用到列的内容在SELECT子句中,只有一个WHERE子句.
但是您可以使用普通(非正则表达式)字符串操作函数来执行此操作.如果包含您的&符号分隔参数字符串的列名为url,则可以使用此精细字符串表达式获取ID号,该表达式将查找您的ID号.
CAST(RIGHT(url, LENGTH(url) - 3 - LOCATE('&id=', url)) AS SIGNED INTEGER)
因此,如果您需要table1的url列中的id值列表,则可以使用此SELECT查询.
SELECT CAST(RIGHT(url, LENGTH(url) - 3 -
LOCATE('&id=', url)) AS SIGNED INTEGER) AS id
FROM table1
WHERE url REGEXP '&id=[0-9]+'
如您所见,这使用正则表达式搜索功能来定位适当的行.
这没什么好快的. Regexp匹配无法利用MySQL索引.如果您可以选择使用预先提取的id列加载表格,那么当您的桌子变大时,您将会更好地搜索.
内容总结
以上是互联网集市为您收集整理的mysql – 使用正则表达式选择字段的一部分全部内容,希望文章能够帮你解决mysql – 使用正则表达式选择字段的一部分所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。