首页  >  问答  >  正文

查找Mysql REGEXP的年份范围

我想根据年份间隔来分离我的电影网站上表格中的内容,但无论我如何努力,我都无法成功。 实际上,我想要的是在 1950 之前列出电影文件。 我不知道我是否犯了语法错误,因为我是初学者

A Movie 1910
B Movie 1920
C Movie 1930
D Movie 1940
E Movie 1950
F Movie 1970
G Movie 1990


SELECT * FROM streams WHERE type='movie' AND filename REGEXP '/^(190[1-9]\d|194\d)$/';

P粉545910687P粉545910687183 天前418

全部回复(1)我来回复

  • P粉432930081

    P粉4329300812024-04-02 12:26:05

    年份位于文件名的末尾,而不是开头,因此您需要删除 ^ 锚点。

    19 之后有一个额外的 0,因此您匹配的是以 190 开头的 5 位数年份,而不是 4 位数以 19 开头的年份。

    不要在 SQL 中的正则表达式周围放置 / 分隔符。

    SELECT * FROM streams 
    WHERE type='movie' 
    AND filename REGEXP '19[0-4]\d$';

    如果您使用 MySQL 5.x 而不是 8.x,它不支持像 \d 这样的转义序列。将其替换为 [0-9] 以匹配数字。

    回复
    0
  • 取消回复