OracleSQLBETWEEN不返回最后一个值
我正在使用 Oracle SQL Developer,在执行此命令后,只有名称以 开头K并L显示。为什么M不出现开头的名字?
SELECT DISTINCT(names) FROM STUDENTS WHERE names BETWEEN 'K%' AND 'M%' ORDER BY 1 DESC;
当我执行时:
SELECT DISTINCT(names) FROM STUDENTS WHERE names BETWEEN 'K%' AND 'N%' ORDER BY 1 DESC;
K, L,M出现但不以开头的名称N。BETWEEN是包容的所以有什么问题?
这完美地工作:
SELECT * FROM STUDENTS WHERE year BETWEEN 1 AND 3;
回答
谓词之间并不意味着like您只是在比较字符串。改写这个
-- Names with starting letters K, L, M, N
names >= 'K' AND names < 'O'
或者,使用正则表达式
-- Names with starting letters K, L, M
REGEXP_LIKE (names, '^[K-M]')