关于Oracle中查询结果为未选定行

时间:2023-06-02 22:32:43

今天在做关于Oracle查询语句的练习时,碰到这么一个题目:找出EMP表中姓名(ENAME)第三个字母是A的员工姓名。我的Scott.emp表的现有数据如下:

SQL> select * from emp;

EMPNO     ENAME   JOB          MGR     HIREDATE         SAL   COMM   DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369       SMITH    CLERK       7902      17-12月-80        800                  20
7499       ALLEN    SALESMAN 7698       20-2月 -81       1600       300     30
7521       WARD    SALESMAN 7698       22-2月 -81       1250       500     30
7566       JONES    MANAGER  7839       02-4月 -81       2975                  20
7654       MARTIN  SALESMAN 7698       28-9月 -81       1250      1400    30
7698       BLAKE    MANAGER  7839        01-5月 -81       2850                 30
7782       CLARK    MANAGER  7839       09-6月 -81        2450                 10
7788       SCOTT    ANALYST   7566        19-4月 -87        3000                20
7839       KING      PRESIDENT               17-11月-81       5000                10
7844       TURNER SALESMAN  7698       08-9月 -81        1500        0      30
7876       ADAMS  CLERK         7788       23-5月 -87        1100                20
7900      JAMES    CLERK         7698       03-12月-81        950                 30
7902      FORD     ANALYST      7566       03-12月-81       3000                20
7934      MILLER  CLERK          7782       23-1月 -82        1300                10
7399      JACK     CLERK          7698                                3300                20

我的Select查询语句是这样写的 select enamel from emp where ename like '__A';

查询结果为

SQL> select ename from emp where ename like '__A';

未选定行

开始以为是查询语句写错了,左改右改结果还是这样。后来到网上一查,原来“未选定行”这个不是错误,是因为数据库中没有和查询语句相符的结果。

SQL> ed
已写入 file afiedt.buf

1* select count(ename) from emp where ename like '__A'
SQL> /

COUNT(ENAME)
------------
0

看来遇问题不能先入为主,我一开始以为这是语句错误,而老是想找出这个语句哪里错了。其实这不是错误,只是数据库中数据的问题。