Почему данные не возвращаются - PullRequest
1 голос
/ 03 октября 2019

Я пытаюсь найти майоры, которые заканчиваются на 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'

Это не работает на основе liveql (oracle (PL-SQL), но работает на T-SQL)).

Это сообщение об ошибке: «Данные не найдены»

Ответы [ 2 ]

3 голосов
/ 03 октября 2019

Ваш CHAR (10) всегда будет содержать 10 символов, поэтому он будет дополнен пробелами. Измените на VARCHAR2 (10), и он будет работать. Я предполагаю, что Oracle, так как вы не указали, какая база данных. Но VARCHAR (10) должен работать с T-SQL.

1 голос
/ 03 октября 2019

Если вы не можете (или не хотите) изменить тип данных на varchar2 (не 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...