为什么字母的 BETWEEN 命令与 SQL 中的数字不同

Why does the BETWEEN command for letters differ for numbers in SQL

我的问题是为什么当我输入查询时

SELECT * FROM movies WHERE year BETWEEN 1990 AND 2000;

包括 2000 年但是当我输入查询时:

SELECT * FROM movies WHERE name BETWEEN 'A' and 'J'

不包括以 J 开头的电影。我不明白在查看字母与数字时 between 函数的工作方式的不一致。我知道您可以使用 % 来包含它,但我想知道为什么它会这样工作。

简而言之,因为J不等于JumanjiBETWEEN A AND B 关键字等同于 >= A AND <= B

与SQL无关。
J 开头的所有内容(例如 JAVA)按字母顺序大于 J 本身。

正如 Stavr 所提到的,SQL 不会推断出您使用的文字以外的其他字符。

SELECT * FROM
(
    SELECT 'A Few Good Men' As Movie
        UNION ALL 
    SELECT 'Back to the Future' As Movie
        UNION ALL 
    SELECT 'Call of the Wild' As Movie
        UNION ALL 
        SELECT 'Captain America' As Movie
        UNION ALL 
    SELECT 'D Movie' As Movie
        UNION ALL 
    SELECT 'E Movie' As Movie
        UNION ALL 
    SELECT 'F Movie' As Movie
        UNION ALL 
    SELECT 'G Movie' As Movie
        UNION ALL 
    SELECT 'H Movie' As Movie
        UNION ALL 
    SELECT 'I Movie' As Movie
        UNION ALL 
    SELECT 'J Movie' As Movie
        UNION ALL 
    SELECT 'J Movie 2' As Movie
) it 
WHERE Movie BETWEEN 'A' AND 'J%'