Oracle SQL BETWEEN 不返回最后一个值

Dom*_*win 0 sql oracle between

我正在使用 Oracle SQL Developer,在执行此命令后,只有名称以 开头KL显示。为什么M不出现开头的名字?

SELECT DISTINCT(names) FROM STUDENTS WHERE names BETWEEN 'K%' AND 'M%' ORDER BY 1 DESC;
Run Code Online (Sandbox Code Playgroud)

当我执行时:

SELECT DISTINCT(names) FROM STUDENTS WHERE names BETWEEN 'K%' AND 'N%' ORDER BY 1 DESC;
Run Code Online (Sandbox Code Playgroud)

K, L,M出现但不以开头的名称NBETWEEN是包容的所以有什么问题?

这完美地工作:

SELECT * FROM STUDENTS WHERE year BETWEEN 1 AND 3;
Run Code Online (Sandbox Code Playgroud)

Luk*_*der 5

谓词之间并不意味着like您只是在比较字符串。改写这个

-- Names with starting letters K, L, M, N
names >= 'K' AND names < 'O'
Run Code Online (Sandbox Code Playgroud)

或者,使用正则表达式

-- Names with starting letters K, L, M
REGEXP_LIKE (names, '^[K-M]')
Run Code Online (Sandbox Code Playgroud)