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

SQL LIKE子句中的%是否和正则.*一样具有贪婪匹配特性?

SQL中LIKE的%是否和正则.*一样是贪婪匹配并回溯?

你的SQL语句:

SELECT * FROM mytable where username like '%ash%';

答案是:不一样,SQL里LIKE的%完全没有正则中.*那种贪婪匹配+回溯的机制。

具体说明:

  • 正则的.*是贪婪匹配逻辑,会先尽可能吞入所有字符,当后续匹配条件不满足时,再逐步回溯调整匹配的长度。
  • 但SQL的%逻辑要简单直接得多:它的作用就是匹配任意数量(包括0个)的任意字符,匹配过程是线性扫描的——比如%ash%会从字符串开头开始扫描,找到ash子串后,前面的所有字符直接被前一个%匹配,后面的所有字符直接被后一个%匹配,全程不需要回溯,因为它只需要完成“字符串包含指定子串”的匹配目标,没有“先全吞再调整”的复杂逻辑。

举个实际例子:如果用户名是tomashjerry,%ash%会直接匹配tom(前%)、ash、jerry(后%),整个过程一步到位,不会像正则那样先把整个字符串全吞,再回头找ash的位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 13:30:41