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

基于VARCHAR字段末尾4/5个字符筛选记录的SQL实现方法

嘿,这个问题我刚好碰到过类似的场景,两种思路都能实现需求,但各有优劣,我给你拆解下:

两种可行的思路

不管是直接匹配末尾字符还是拆分字符串,主流SQL数据库都有对应的函数支持,下面分别说明:

1. 直接匹配字段末尾的字符

因为你的字段格式是「整数/四位整数」,要找以2017结尾的记录,本质上是找**最后五位字符为/2017**的记录(斜杠+四位年份)。这种方法代码简洁,执行效率也不错。

举几个不同数据库的实现示例:

  • MySQL/PostgreSQL/SQL Server 通用写法(用LIKE):
    SELECT * FROM your_table WHERE your_column LIKE '%/2017';
    
  • 用RIGHT函数精准匹配末尾5位:
    -- MySQL/SQL Server
    SELECT * FROM your_table WHERE RIGHT(your_column, 5) = '/2017';
    
    -- PostgreSQL
    SELECT * FROM your_table WHERE RIGHT(your_column, 5) = '/2017';
    

2. 拆分字符串后对比

如果想更严谨地只提取斜杠后的四位整数进行比较,也可以用字符串拆分函数把斜杠后面的部分单独拿出来,再和'2017'对比。这种方法能避免一些格式不规范的误匹配(比如字段是'12342017'这种没有斜杠的情况)。

不同数据库的拆分函数示例:

  • MySQL:用SUBSTRING_INDEX取斜杠右侧的内容
    SELECT * FROM your_table WHERE SUBSTRING_INDEX(your_column, '/', -1) = '2017';
    
  • SQL Server:结合REVERSE和CHARINDEX拆分
    SELECT * FROM your_table 
    WHERE RIGHT(your_column, CHARINDEX('/', REVERSE(your_column)) - 1) = '2017';
    
  • PostgreSQL:用split_part拆分
    SELECT * FROM your_table WHERE split_part(your_column, '/', 2) = '2017';
    

哪种方法更合适?

  • 如果你的数据格式非常规范(所有记录都是严格的「整数/四位整数」,没有例外),直接匹配末尾字符的写法更简单,性能也更优;
  • 如果担心存在格式不规范的记录(比如少了斜杠、后面多了空格等),拆分字符串的方法更严谨,能确保只筛选出斜杠后是2017的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:19:13