我有一个分配任务,即列出名称以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开头的员工。
答案 0 :(得分:3)
你可以使用左
从emp中选择ename 左边(ename,1)in('M','K','S')
答案 1 :(得分:2)
您可以尝试使用正则表达式(但我发现原始工作LIKE
子句没有错误):
SELECT ename from emp
WHERE REGEXP_LIKE (ename , '^[KMS]');