喜欢 'X%' 或喜欢 'Y%' 或喜欢 'Z%' =/= 喜欢 '[XYZ]%'?

LIKE 'X%' OR LIKE 'Y%' OR LIKE 'Z%' =/= LIKE '[XYZ]%'?

我有一个作业任务是列出名字以K、M或S开头的员工的名字。

员工table:

ENAME
----------
KING
BLAKE
CLARK
JONES
MARTIN
ALLEN
TURNER
JAMES
WARD
FORD
SMITH

ENAME
----------
SCOTT
ADAMS
MILLER

问题来了

当我使用以下命令时,它起作用了,但它相当冗长:

SQL> SELECT ename from emp where ename LIKE 'K%' OR ename LIKE 'M%' OR ename LIKE 'S%';

ENAME
----------
KING
MARTIN
SMITH
SCOTT
MILLER

但是当我尝试这个应该有效的命令时,它给了我这个:

SQL> SELECT ename from emp where ename LIKE '[KMS]%';

no rows selected

我的理解是 [] 允许通配符范围或特定值,但我不明白为什么这不允许检查名称以 K、M 或 S 开头的员工。

您可以尝试使用正则表达式(但我认为您原来的 LIKE 子句没有任何问题):

SELECT ename from emp
WHERE REGEXP_LIKE (ename , '^[KMS]');

参考:。 Pattern-matching Conditions

你可以用左

SELECT 来自 emp 的名字 WHERE left(ename, 1) in ('M','K','S')