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

MySQL正则表达式中转义问号报错问题求助

解决MySQL正则表达式匹配以问号开头字符串的报错问题

这问题我之前踩过坑!你的报错根源是MySQL的字符串转义规则和正则表达式的转义规则冲突了:

你写的'^\?.+'里,MySQL会把字符串中的单个反斜杠\当成转义符,直接把\?解析成普通的问号?。这时候传给正则引擎的表达式就变成了^?.+——而正则里的?是量词(匹配0或1次前面的元素),放在锚定开头的^后面完全不符合语法,自然就报错了。

给你两个靠谱的解决方案:

方案1:双重转义反斜杠

把正则里的反斜杠再转义一次(用两个反斜杠),让MySQL正确识别这是正则需要的转义符:

select * from mytable where thumbnail_url regexp '^\\?.+'

这样MySQL会把\\?解析成正则引擎能识别的\?(表示字面量的问号),最终正则表达式为^\?.+,可以正确匹配以问号开头的字符串。

方案2:用字符类匹配问号

更简单直观的写法是用字符类[?]来匹配字面量的问号——字符类里的特殊字符会被当成普通字符处理,完全不用纠结转义:

select * from mytable where thumbnail_url regexp '^[?].+'

你可以测试一下:如果表中有thumbnail_url值为?abc123的行,用上面两种写法都能正确查询到这条数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:14:56