LIKE语句反斜杠转义在SELECT生效但UPDATE报错排查
问题分析与解决
- 错误根源:UPDATE语句中
CONCAT('App\Models\', object_type)里的反斜杠未正确转义。 - 在SQL字符串里,反斜杠是特殊转义字符,要表示一个实际的反斜杠必须用两个反斜杠(
\\)。你这里只用了单个反斜杠,数据库解析时会把它当成无效的转义命令,从而触发报错。 - 对比你能正常运行的SELECT语句,里面的
'App\\Models\\%'用了双反斜杠,这是正确的写法,所以没有问题。
修正后的UPDATE语句:
UPDATE `sss_notifications` SET `object_type`=CONCAT('App\\Models\\', object_type) WHERE `object_type` NOT LIKE 'App\\Models\\%';
核心就是把CONCAT参数里的'App\Models\'改成'App\\Models\\',用双反斜杠代替单反斜杠,让数据库正确识别这是一个普通的反斜杠字符。
内容的提问来源于stack exchange,提问作者Debiprasad
相关产品推荐
相关产品推荐

