为什么没有数据返回

时间:2019-10-03 17:26:13

标签: sql oracle

我正在尝试找到以S结尾的专业,但没有返回任何数据

create table Student
 (sid char(10) primary key, 
  sname varchar(20) not null, 
  gpa float, 
  major char(10), 
  dob DATE);

insert into Student values('111', 'Joe', 3.5 , 'MIS', '01-AUG-2000');
insert into Student values('222', 'Jack', 3.4  , 'MIS', '12-JAN-1999');
insert into Student values('333', 'Jill', 3.2 , 'CS', '15-MAY-1998');
insert into Student values('444', 'Mary', 3.7 , 'CS', '17-DEC-2001');
insert into Student values('555', 'Peter', 3.8 , 'CS', '19-MAR-1999');
insert into Student values('666', 'Pat', 3.9,  'Math', '31-MAY-2000');
insert into Student values('777', 'Tracy', 4.0,  'Math', '18-JUL-1997');

SELECT * FROM STUDENT
WHERE MAJOR LIKE '%S'

这不适用于livesql(基于Oracle(PL-SQL),但适用于T-SQL)。

这是错误消息:“未找到数据”

2 个答案:

答案 0 :(得分:3)

您的CHAR(10)始终包含10个字符,因此将用空格字符填充。更改为VARCHAR2(10),它将起作用。我假设使用Oracle,因为您未指定哪个数据库。但是VARCHAR(10)应该可以与T-SQL一起使用。

答案 1 :(得分:1)

如果您不能(或不会)将数据类型修改为varchar2(不是Stilgar建议的varchar),则修整该列可能会有所帮助:

SQL> select * from student
  2  where trim(major) like '%S';

SID        SNAME                       GPA MAJOR      DOB
---------- -------------------- ---------- ---------- --------
111        Joe                         3,5 MIS        01.08.00
222        Jack                        3,4 MIS        12.01.99
333        Jill                        3,2 CS         15.05.98
444        Mary                        3,7 CS         17.12.01
555        Peter                       3,8 CS         19.03.99