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

MySQL字符串函数中反斜杠(\)无法正常使用的技术求助

解决MySQL字符串函数中反斜杠()无法生效的问题

这问题我之前踩过好几次坑!核心原因是MySQL默认把反斜杠()当作转义字符,你直接写单个\的时候,它会被用来转义后面的字符,而不是作为一个普通的匹配字符存在。比如你写的语句里:

SELECT LOCATE("", "Schools.co\m", 1) AS MatchPosition;
这里的第一个"\"其实是转义了后面的双引号,实际传递给LOCATE的匹配字符串是空的,自然找不到位置;第二个语句里的"footba\l"会被解析成"footbal",分隔符同样被转义成空,结果肯定不对。

下面给你几个可行的解决方案:

  • 使用双反斜杠(\)代替单个反斜杠
    这是最直接的方法,MySQL会把连续两个反斜杠解析成一个实际的\字符。把你的语句改成这样就能得到预期结果:

    SELECT LOCATE("\\", "Schools.co\\m", 1) AS MatchPosition;
    SELECT SUBSTRING_INDEX("footba\\l","\\",1);
    

    变量赋值的时候同理,比如SET @my_str = 'test\\demo';会得到test\demo的字符串。

  • 修改SQL模式禁用反斜杠转义
    如果觉得双反斜杠写起来麻烦,可以临时设置会话级的sql_mode,关闭反斜杠转义功能:

    SET sql_mode = 'NO_BACKSLASH_ESCAPES';
    

    设置之后,单个\就会被当作普通字符处理,你的原语句就能正常执行了。要是想让这个设置永久生效,需要修改MySQL配置文件(my.cnf或my.ini)里的sql_mode参数,添加NO_BACKSLASH_ESCAPES,然后重启服务。

  • 注意外部输入的转义处理
    如果你是从应用程序(比如Java、PHP)传入包含反斜杠的字符串,还要注意应用层本身的转义规则,比如Java里字符串的\也要用\表示,确保最终传递给MySQL的是正确的转义后的字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:26:59