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

SQL技术问询:能否用LIKE运算符匹配字段前两位与另一字段后两位?

当然可以用LIKE实现这个匹配需求!

我直接结合你给的例子(year为1996、phone_number为9655771243的行需要被筛选)来给你讲具体操作——这里应该是要匹配year的最后两位和phone_number的前两位对吧?

核心思路

LIKE是用来匹配字符串模式的,我们可以通过字符串函数提取出需要匹配的部分,再拼接成通配符模式,就能实现这种跨字段的匹配判断。

针对你例子的SQL语句(以MySQL为例)

如果要筛选year的最后两位与phone_number的前两位匹配的行,写法如下:

SELECT *
FROM your_table_name
WHERE phone_number LIKE CONCAT(RIGHT(year, 2), '%');
  • RIGHT(year, 2):从year字段末尾截取2个字符,比如1996会得到'96'
  • CONCAT(RIGHT(year, 2), '%'):拼接成'96%'的模式,%代表任意后续字符
  • phone_number LIKE '96%':表示phone_number以96开头,正好对应前两位和year的最后两位一致

如果需求反过来(year的前两位匹配phone_number的后两位)

只需要调整一下匹配模式的拼接方式:

SELECT *
FROM your_table_name
WHERE year LIKE CONCAT(RIGHT(phone_number, 2), '%');

这里RIGHT(phone_number, 2)取手机号的最后两位,拼接成'XX%'后,year LIKE 'XX%'就表示year以XX开头,也就是前两位和手机号的后两位匹配。

不同数据库的小差异

不同数据库的字符串函数略有区别,比如:

  • Oracle用SUBSTR替代RIGHT:SUBSTR(year, -2)获取year最后两位,拼接用||,语句为phone_number LIKE SUBSTR(year, -2) || '%'
  • SQL Server支持RIGHT和CONCAT,用法和MySQL基本一致

额外小建议

其实用直接字符串比对会更直观,比如LEFT(year, 2) = RIGHT(phone_number, 2),但既然你问的是LIKE的可行性,上面的方法完全能满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:54:17