从MySQL检索一部分数据

时间:2011-07-15 04:53:59

标签: mysql

我的数据库中的列中有以下数据,我完全不知道如何检索我想要的数据:

a:2:{i:1;a:3:{s:8:"property";s:10:"Promo code";s:5:"logic";s:11:"Is equal to";s:5:"value";s:12:"DISCOUNTTIME";}i:2;a:3:{s:8:"property";s:15:"Promo use count";s:5:"logic";s:11:"Is equal to";s:5:"value";s:1:"0";}}

我正在尝试仅检索DISCOUNTTIME。我可以处理像

这样的基础知识
"SELECT x FROM y WHERE id = z"

但根本不知道如何处理格式化数据的方式。

任何帮助?

2 个答案:

答案 0 :(得分:2)

看一下php unserialize() - 看起来你的字符串是那种格式

答案 1 :(得分:0)

您要检索的表达式的哪一部分?或许在DISCOUNTTIME之前的“s:12”部分?如果您只是想找到包含DISCOUNTTIME的行,那么您可以使用MySQL INSTR运算符:SELECT * FROM y WHERE INSTR(columnname,'DISCOUNTTIME')> 0

如果您要查找与DISCOUNTTIME相关的某些文字,例如“s:12:”那么你可以通过将INSTR与其他表达式相结合来实现。如果您知道前面的文本将始终有五个字符,如“s:12:”那么您可以选择SUBSTR(columnname,INSTR-5,5)

如果字符串结构非常复杂,那么最好编写一个程序来查询数据库,然后使用regexp或其他技术来提取字符串。

请参阅此处的MySQL字符串函数:http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_instr