截取SQL字段子串更新条目触发MariaDB 1064语法错误如何解决
MariaDB SQL语句修正方案
错误原因
- 需求是修改已存在的id=1的行数据,应该使用
UPDATE更新语句而非INSERT插入语句,INSERT仅用于新增数据行 - 原SQL混用了
SELECT和VALUES关键字,不符合MariaDB语法规范
正确执行语句
UPDATE crm_logs2 SET status_from = TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(action, 'from', -1), 'to', 1)) WHERE id = 1;
逻辑说明
- 保留你原本的子串截取逻辑:先从
action字段中截取from之后的所有内容,再从截取结果中取to之前的内容,最终得到目标子串 - 额外增加
TRIM()函数去除截取结果前后的空白字符,避免from、to前后的空格被误提取 - 通过
WHERE id = 1限定仅修改目标条目,不会影响其他行数据
验证提示
你可以先执行如下查询语句确认截取结果是否符合预期,确认无误后再执行更新操作,避免误改数据:
SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(action, 'from', -1), 'to', 1)) AS expected_status_from FROM crm_logs2 WHERE id = 1;
内容的提问来源于stack exchange,提问作者user17071484
相关产品推荐
相关产品推荐

