Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 序列化字符串中的按值排序_Mysql - Fatal编程技术网

Mysql 序列化字符串中的按值排序

Mysql 序列化字符串中的按值排序,mysql,Mysql,我有一个数据库,其中包含一个序列化字符串,如下所示: [gundealer|0 mayor|0 umlf|0 sbgfboss|0 ems|0 trader|0 thief|0 cp|0 umflboss|0 guard|0 sbgf|0 ] 是否有可能通过此序列化字符串的子项进行订单查询?您可以使用演示方法进行此操作:- SELECT SerializeTest.* FROM SerializeTest INNER JOIN (SELECT SerializeTest.Id, SUBSTR

我有一个数据库,其中包含一个序列化字符串,如下所示:

[gundealer|0
mayor|0
umlf|0
sbgfboss|0
ems|0
trader|0
thief|0
cp|0
umflboss|0
guard|0
sbgf|0
]

是否有可能通过此序列化字符串的子项进行订单查询?

您可以使用演示方法进行此操作:-

SELECT SerializeTest.*
FROM SerializeTest 
INNER JOIN (SELECT SerializeTest.Id, SUBSTRING_INDEX( SUBSTRING_INDEX( SUBSTRING( SomeField, 2, LENGTH( SomeField ) -2 ) , '|', anInt +1 ) , '|', -1 ) AS SortValue
FROM SerializeTest, 
(SELECT a.i+b.i*10 AS anInt FROM integers a, integers b) Sub1
WHERE MOD(anInt, 2) =1
AND anInt <=  (LENGTH(SomeField) - LENGTH(REPLACE(SomeField,'|', '' )))
AND SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING(SomeField,2, LENGTH(SomeField) -2), '|', anInt), '|', -1) = 'ems') Sub2
ON SerializeTest.Id = Sub2.Id
ORDER BY SortValue

请注意,我真的不建议您在实时环境中使用它。不仅因为我怀疑性能会迅速下降,而且因为它不太容易理解

,这是可能的(我对存储在MySQL字段中的php序列化数组进行了这项操作),但可能会执行得很差。在php中抓取66k记录并对其进行排序将是一件非常困难的事情。这就是我问的原因。如果可以的话,在查询中可以节省我很多时间。是的,你是对的,如果我读对了,我就不能把它应用到我的情况中。该字段不包含这些设置值。它依赖于不同的用户。我想我更擅长通过PHP解析顺序。你可能仍然可以使用它。用于获取排序值的subselect可以重复以对多个字段进行排序,并且可以使用左外部联接来处理行没有要排序的值的情况。但是,通常最好将这些值拆分到单独的表中。
INSERT INTO `SerializeTest` (`Id`, `SomeField`) VALUES
(1, '[gundealer|1|mayor|0|umlf|3|sbgfboss|0|ems|5|trader|0|thief|0|cp|0|umflboss|0|guard|0|sbgf|0]'),
(2, '[gundealer|1|mayor|0|umlf|3|sbgfboss|0|ems|9|trader|0|thief|0|cp|0|umflboss|0|guard|0|sbgf|0]'),
(3, '[gundealer|1|mayor|0|umlf|3|sbgfboss|0|ems|8|trader|0|thief|0|cp|0|umflboss|0|guard|0|sbgf|0]');