我在MySQL DB中有一个名为 details 的序列化字段,如下所示:
a:4:{s:9:"bootstrap";s:14:"Boostrap_3.3.x";s:7:"layouts";s:10:"Responsive";s:13:"preprocessors";s:0:"";s:8:"browsers";s:117:"Latest_Chrome,Latest_Firefox,Latest_Safari,Internet_Explorer_11,Internet_Explorer_10,Internet_Explorer_9,Latest_Opera";}
我正在尝试检索包含 Bootstrap_3.x
的值的记录我已经能够根据密钥检索详细信息字段数据:bootstrap包含以下内容:
SELECT details as bootstrap_version FROM product_info WHERE details LIKE '%bootstrap%'
此查询返回所有具有名为bootstrap的字段的记录。
为了选择包含Bootstrap_3.x的值,我需要更改哪些内容?
任何帮助都将不胜感激。
绞纱, -Paul
答案 0 :(得分:0)
在MySQL中,您可以在查询中使用正则表达式:
SELECT details as bootstrap_version FROM product_info
WHERE details REGEXP 'bootstrap";s:\\d+:"Bootstrap_3\.x'
但是,如果您计划更频繁地使用此信息进行搜索,我建议将其放在您可以索引的另一列中 - 查询中的regexp非常慢。
在文档中阅读更多内容:https://dev.mysql.com/doc/refman/5.7/en/regexp.html
答案 1 :(得分:0)
您应该使用REGEXP:
SELECT details AS bootstrap_version FROM product_info WHERE details REGEXP 'Boostrap_3(\\.[0-9]+)+'