为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
DM Database Server 64 V8
企业版
DB Version: 0x7000c
03134283904-20220630-163817-20005
【操作系统】:LINUX
【CPU】:
【问题描述】*:
[执行语句1]:
UPDATE t_ds_task_definition
SET task_params = JSONB_SET(
task_params,'$.processDefinitionId',(
SELECT concat('pro-',id)
FROM t_ds_process_definition
WHERE "code" = CAST(
JSON_VALUE(task_params,'$.processDefinitionCode') AS BIGINT
)
),TRUE
)
WHERE task_type = 'SUB_PROCESS';
执行失败(语句1)
-3105: JSON值语法错误
执行SQL报错,去掉concat函数不报错
[执行语句1]:
UPDATE t_ds_task_definition
SET task_params = JSONB_SET(
task_params,'$.processDefinitionId',(
SELECT id
FROM t_ds_process_definition
WHERE "code" = CAST(
JSON_VALUE(task_params,'$.processDefinitionCode') AS BIGINT
)
),TRUE
)
WHERE task_type = 'SUB_PROCESS';
执行成功, 执行耗时39毫秒. 执行号:2424755102
影响了1条记录
1条语句执行成功
表里面task_params值为
{"localParams":[],"resourceList":[],"processDefinitionId":30,"processDefinitionCode":10977342985024}
注意事项:
ini参数compatible_mode为0,否则类型转换为varchar2,jsonb_set只接受varchar或blob类型;
转换后结果前后加'"',否则报类型不匹配