如何从mysql数据库中的serialize字段中搜索除mysql之外的语句?
数据是:
a:9:{s:2:"m1";s:4:"1217";s:2:"m2";s:8:"9986-961";s:2:"m3";s:19:"1988-03-07 00:00:00";s:2:"m4";s:0:"";s:2:"m5";s:0:"";s:2:"m6";s:0:"";s:2:"m7";s:3:"104";s:2:"m8";s:6:"150000";s :2:"m9";s:18:"Ok Then, Yes It Is";}
我需要m9值为' Yes It Is'的行。我不想使用mysql'喜欢'言。
我试过了:
SELECT * FROM table WHERE field like '%Yes It Is%'
你能帮忙吗?
答案 0 :(得分:14)
我找到了一个使用正则表达式的解决方案:
SELECT *
FROM table_name
WHERE `field` REGEXP '.*"array_key";s:[0-9]+:".*array_value.*".*'
SELECT *
FROM table_name
WHERE `field` REGEXP '.*"m9";s:[0-9]+:".*Ok Then, Yes It Is.*".*'
希望这会有所帮助:
http://www.namasteui.com/search-from-serialize-field-in-mysql-database/
答案 1 :(得分:5)
您是否尝试过以下操作:
SELECT * FROM table WHERE field like '%"m9";s:18:"Ok Then, Yes It Is";%'
但事实上,如果你想搜索这些数据,你应该简单地创建表的正确结构,而不是将所有序列化数据放在一列中