Select MySQL 中字符串的一部分

Select a part of a string in MySQL

我有一个 MySQL table,其字符串列为

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}]}"}

现在如何才能select只查询MySQLPropertyTypeID=33PropertyValueselect?仅当所有字符串的长度都相等时才可以使用 substring() 方法,但在我的情况下,不同 ID 的长度可能会有所不同。

这就是为什么在数据库字段中存储 JSON、序列化 arrays/objects 或仅存储多个值被认为是不好的做法,除非出于某种原因您永远不需要其中的任何内容。

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

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

ID | PropertyValue | PropertyReferenceTypeID |  ProductTypeID

那么你永远不会有这个问题,你只需要SELECT PropertyValue FROM Properties WHERE ID=1

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

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

P.S。您的 json 仍然不完全有效,因为它是嵌套的。