我正在尝试找到以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)。
这是错误消息:“未找到数据”
答案 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