喜欢 '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]');
你可以用左
SELECT 来自 emp 的名字
WHERE left(ename, 1) in ('M','K','S')
我有一个作业任务是列出名字以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]');
你可以用左
SELECT 来自 emp 的名字 WHERE left(ename, 1) in ('M','K','S')