我知道它已经得到了回答,但它对我不起作用。
这么快介绍:
我有桌子叫swimmers
。我将向其中插入满足所有列的新记录:
INSERT INTO swimmers(id, first_name, last_name, age, gender)
VALUES(9,'Maria','Spolsky',34,'Female');
现在我想在swimmers
表中查找first_name
不以字母结尾a
且性别在哪里的记录Female
所以我写了SQL查询:
SELECT first_name, last_name
FROM swimmers
WHERE first_name NOT LIKE '%a' AND gender = 'Female'
但它确实返回Maria
了我们刚刚添加的内容。它基本上返回每个女性
我正在使用 ORACLE iSQL plus。
编辑:
我尝试使用substr(first_name, -1) = 'a'
但结果是-1是空的,因为我使用varchar(20)
并且名称通常小于20个字符
编辑2:
我试图找到数据类型的问题。我char(20)
用于first_name
.
我将其更改为 varchar2(20):
ALTER TABLE swimmers
MODIFY first_name varchar2(20);
但没有解决问题
编辑 3:
更改NOT LIKE
为WHERE first_name LIKE '%a'
不返回任何行。我认为问题在于数据类型和从 first_name 末尾到字符串保留空间末尾的空格(名称有大约 10 个字符,我使用 `varchar2(20))