编写SQL查询以生成所有学生的列表?

时间:2018-04-03 13:32:24

标签: sql oracle

Student1 table

我试图解决它,但它总是给我一个错误

select * from student1 where student_fname student_lname like '%a';
select * from student1 where student_fname student_lname like '%a'
                                       *

第1行的错误:

  

ORA-00920:无效的关系运算符

6 个答案:

答案 0 :(得分:4)

试试这个?您需要添加另一个%,以便它查看单词的两侧以查找字符(如果它位于中间)。此外,使用OR使其不仅仅查看第一个或最后一个。

select * 
from student1 
where lower(student_fname) like '%a%' or lower(student_lname) like '%a%'

答案 1 :(得分:0)

您已关闭 - 您需要将条件与OR

分开
select * from student1 where student_fname like '%a%' or student_lname like '%a%';

如果您希望学生的中的a 名字和姓氏,请将您的条件加入AND

select * from student1 where student_fname like '%a%' and student_lname like '%a%';

另请注意,'%a'会为您提供a中名称​​结尾的学生。可以认为%为"匹配任何内容",因此'%a'表示"匹配任何内容,然后是a。"你想要'%a%',"匹配任何东西,然后是a,然后是任何东西。"

答案 2 :(得分:0)

假设您正在查找包含姓名a的案例,您需要使用"和"运营商。

select * 
from student1 
where student_fname like '%a%' 
and student_lname like '%a%';

如果其中一列足以包含字母and

,您可以将关键字or更改为a

答案 3 :(得分:0)

select * from student1 where student_fname like '%a%' or
student_lname like '%a%';

%a%如果您需要姓氏'包含'

答案 4 :(得分:0)

  

他们的名字中有一个字母'a'(名字/姓氏)。?

信" a "可以是 UPPER LOWER 。您需要使LIKE条件不区分大小写

SELECT *
FROM   student1
WHERE  LOWER(student_fname) LIKE '%a%'
OR     LOWER(student_lname) LIKE '%a%';

注意:在常规B-tree索引列上使用UPPER / LOWER函数将取消索引使用,可能是性能问题。为UPPER / LOWER创建基于函数的索引,或者为UPPER / LOWER案例创建单独的OR条件:

SELECT *
FROM   student1
WHERE  student_fname LIKE '%a%'
OR     student_fname LIKE '%A%'
OR     student_lname LIKE '%a%'
OR     student_lname LIKE '%A%';

还有许多其他方法可以执行不区分大小写的操作,您可以在Oracle – Case Insensitive Sorts & Compares

处闲逛

答案 5 :(得分:0)

或者...

SELECT
    first_name,
    last_name
  FROM
    students
 WHERE
    upper(first_name || last_name) LIKE '%A%';