我有一列 PARAM,其中包含如下所示的 JSON 数据:
JSON:{"Name":"RES_InformationalIssues","StepName":"Page_1","StepData":"f601e9fe-d68a-4ed7-bbaa-f40c9cbc4d12=General Product Information","SessionId":"ab04f2c4-ddge-4555-c792-01d9518e7148"}
我希望有多个列(名称、StepName、StepData、SessionID),其中包含它们的数据。
SELECT substr(PARAM, (instr (PARAM , 'Name":"' )+7), (instr(PARAM, 'StepName":"'))-21) as Name, substring(PARAM, (instr (PARAM , 'StepName":"'))+14, (instr(PARAM, 'StepData":"'))-(instr(PARAM, 'StepName":"'))-17) as StepName FROM Table
由于我更改了名称,因此该查询无法完全正确地工作,但我认为您明白了。当我对这些列中的任何一个运行查询时,我得到了我正在寻找的数据。但是当它们像我上面那样一起运行时,我得到了错误:
错误 [HY000] 错误:记录大小 120000 超出了 65535 字节的内部限制
感觉这意味着我不应该将 PARAM 的文本指定为列名,但这不是我想要做的。需要任何建议或澄清吗?
我想函数结果的数据类型与列本身
SUBSTR(PARAM, ...)
的长度相同。PARAM
由于您的select
列表中有两个,如果 的长度PARAM
足够大,则选择列表中两个值的组合长度可能超过某种内部限制。尝试将值显式转换为较短的数据类型,例如
我猜你正在创建一个表,并且你正在最大化列/行大小。分成更多的表。如果这是真的。