MysqL客户端的版本无关。该功能在MysqL服务器中存在(或在您的情况下不存在)。因此,唯一相关的是MysqL服务器版本。并且此功能仅在MysqL服务器5.7及更高版本中可用。升级客户端无法解决问题,您需要升级服务器。
有没有解决的办法?是。PHP的json_decode
这可以工作,因为您的查询没有WHERE子句。您正在看整个桌子。因此,您可以轻松地获取所有数据和json_decode,然后在您的PHP代码中进行处理。如果您有很多数据,这将非常慢。
解决方法目标:-json_extract不存在错误。
我确实有这样的消息正文。
< message type = 'chat' to = 'socialapp_233@22.52.258.256' from = 'socialapp_6@22.52.258.256/9fs4kgn090' > < body > { 'opponent_xmpp_id': 'socialapp_233@22.52.258.256','latest_message_id': '6233' } < /body><active>http:/ / jabber.org / protocol / chatstates < /active></message >
我试图提取 opponent_xmpp_id 和 latest_message_id 。
为此,我写了如下查询。
SELECT LEFT(ExtractValue( stanza,'//@from' ),LOCATE('@',ExtractValue( stanza,'//@from' )) - 1),LEFT(ExtractValue( stanza,'//@to' ),'//@to' )) - 1),ExtractValue(stanza,'//body'),'//@chattype'),TRIM(BOTH ’'’ FROM json_extract(ExtractValue(stanza,’$.opponent_xmpp_id’)) AS opponent_xmpp_id,json_extract(ExtractValue(stanza,’$.latest_message_id’) AS latest_message_idFROMofOffline
导致错误
1305-FUNCTION databaseName.json_extract不存在按照我搜索其支持仅在> MYsql 5.7版本。
那么在MySQL客户端版本5.5.52中是否有任何函数可以像json_extract一样进行类似的工作?