我试图解决它,但它总是给我一个错误
select * from student1 where student_fname student_lname like '%a';
select * from student1 where student_fname student_lname like '%a'
*
第1行的错误:
ORA-00920:无效的关系运算符
答案 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%';