在MySQL中选择一个字符串的一部分

时间:2015-06-02 16:40:53

标签: mysql select substring

我有一个带有字符串列的MySQL表,

ID       String                                                                                        
-----   -----------------------------------------
1        {"Type":"new", "Node":"{Status=New, Properties=[{PropertyValue=Samp, PropertyRefernceTypeID=1, PropertyTypeID=26}, {PropertyValue=25, PropertyRefernceTypeID=1, PropertyTypeID=33}]}"}
2        {Type":"new", "Node":"{Status=New, Properties=[{PropertyValue=25, PropertyRefernceTypeID=1, PropertyTypeID=33}, {PropertyValue=168-3, PropertyRefernceTypeID=1, PropertyTypeID=103}]}"}

现在我如何在MySQL select Query中只选择PropertyValue PropertyTypeID=33?只有当所有字符串的长度相等时才可以使用substring()方法,但在我的情况下,长度可能因不同的ID而异。

1 个答案:

答案 0 :(得分:0)

这就是为什么在数据库字段中存储JSON,序列化数组/对象或只是多个值被认为是不好的做法,除非由于某种原因你内部不需要任何东西。

该字段应始终是原子的。您应该遵循数据库规范化准则。

因此,您的数据库应该是这样的:

ID | PropertyValue | PropertyReferenceTypeID |  ProductTypeID

然后你永远不会遇到这个问题,你只需SELECT PropertyValue FROM Properties WHERE ID=1

但是现在,为了避免这种麻烦,如果您使用的是app语言,只需获取字符串并对其进行解码即可。例如,在PHP中:

$array = json_decode($str);
$PropertyValue = $arr['Node']['Properties']['PropertyValue'];

P.S。你的json在嵌套时仍然没有完全有效。