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

MySQL REGEXP筛选年份范围:如何列出1950年前的影片?

解决1950年前影片的筛选问题

你的SQL语句存在几个关键问题,导致筛选失败:

  • 正则表达式不该用斜杠/包裹,多数SQL的REGEXP参数直接写模式即可
  • 用^和$强制要求整个文件名是年份字符串,但你的文件名是「电影名 + 年份」的格式,前面还有电影名,完全匹配不上
  • 正则的年份范围写错了,190[1-9]\d会匹配五位数的数字(比如19010),根本不是正常年份,也没覆盖1900-1949的全部范围

下面给你两种简单可行的解决方法:

方法一:修正正则表达式

适合文件名年份格式不固定,但年份在末尾且前面有空格的情况:

SELECT * FROM streams WHERE type='movie' AND filename REGEXP ' (18[0-9]{2}|19[0-4][0-9])$';
  • (18[0-9]{2}:匹配1800-1899年(前面的空格是为了避免匹配电影名里的数字)
  • 19[0-4][0-9]):匹配1900-1949年
  • $:确保年份在文件名的最后

方法二:用字符串函数提取年份(更简单)

如果你的文件名年份都是固定在最后四位,直接用RIGHT函数提取后比较即可,比正则更直观:

SELECT * FROM streams 
WHERE type='movie' 
AND RIGHT(filename, 4) < '1950';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:54:15