You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL更新语句中反斜杠失效问题求助

MySQL中反斜杠转义导致UPDATE语句失效的解决办法

问题场景

直接使用含单个反斜杠的路径执行UPDATE时,因MySQL将\视为转义字符,语句无法正常执行:

UPDATE midshared.SETUP
SET DATAVALUE = 'C:\Documents and Settings\ADMINISTRATOR\Desktop\'
WHERE CODE = 'SAGEPATH'

手动将每个\替换为\\后,语句可正常执行:

UPDATE midshared.SETUP
SET DATAVALUE = 'C:\\Documents and Settings\\ADMINISTRATOR\\Desktop\\'
WHERE CODE = 'SAGEPATH'

但以下两种尝试的方法均无效:

  • REPLACE函数方式:传入的字符串中\已被提前转义,REPLACE无法识别原始单反斜杠:

    UPDATE midshared.SETUP
    SET DATAVALUE = REPLACE('C:\Settings\ADMINISTRATOR\Desktop\','\','\\')
    WHERE CODE = 'SAGEPATH'
    
  • QUOTE函数方式:同样因原字符串的\被提前转义,QUOTE无法正确处理原始路径:

    UPDATE midshared.SETUP
    SET DATAVALUE = QUOTE('C:\Documents and Settings\ADMINISTRATOR\Desktop\')
    WHERE CODE = 'SAGEPATH'
    

有效解决方向

  1. 坚持双反斜杠转义
    这是最通用且可靠的方案,确保每个路径中的\都替换为\\,让MySQL正确解析并存储单个反斜杠。

  2. 启用NO_BACKSLASH_ESCAPES模式

  • 临时启用(当前会话生效):
    SET SESSION sql_mode = 'NO_BACKSLASH_ESCAPES';
    
    启用后可直接使用单反斜杠路径执行UPDATE:
    UPDATE midshared.SETUP
    SET DATAVALUE = 'C:\Documents and Settings\ADMINISTRATOR\Desktop\'
    WHERE CODE = 'SAGEPATH'
    
  • 全局生效:修改MySQL配置文件(如my.cnf/my.ini),添加sql_mode = NO_BACKSLASH_ESCAPES,重启服务后永久生效。
  1. MySQL 8.0+使用原始字符串语法
    对于MySQL 8.0及更高版本,可使用r''包裹原始字符串,其中反斜杠无需转义:
UPDATE midshared.SETUP
SET DATAVALUE = r'C:\Documents and Settings\ADMINISTRATOR\Desktop\'
WHERE CODE = 'SAGEPATH'

内容的提问来源于stack exchange,提问作者AndyD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 20:40:46