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

时间:2016-07-14 04:41:20

标签: sql sqlplus

我有一个分配任务,即列出名称以K,M或S开头的员工的姓名。

员工表:

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开头的员工。

2 个答案:

答案 0 :(得分:3)

你可以使用左

从emp中选择ename 左边(ename,1)in('M','K','S')

答案 1 :(得分:2)

您可以尝试使用正则表达式(但我发现原始工作LIKE子句没有错误):

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

参考:. Pattern-matching Conditions