我有两张桌子:
CREATE TABLE teacher (
tid varchar2(40),
tname varchar2(20)
);
CREATE TABLE student (
sid varchar2(40),
sname varchar2(20),
tid varchar2(40)
);
这些表中有很多数据,但是当我执行SQL时:
SELECT *
FROM student s, teacher t
WHERE s.tid = t.tid
什么也没有。我很困惑,为什么?
与" tid varchar2(40)
"?
答案 0 :(得分:1)
检查两个表中是否有相同的tid。如果你看到两个都有相同的id但仍然没有结果,那么你在末尾有尾随空格或任何specail字符(因为ID在这里被称为Varchar)。尝试修剪您的查询。
SELECT *
FROM student s, teacher t
WHERE trim(s.tid) = trim(t.tid);
答案 1 :(得分:0)
您的tid
或sid
字段可能包含不可见的尾随空格。尝试通过修剪空白来清理这些字段:
UPDATE teacher SET tid = TRIM(tid);
UPDATE student SET tid = TRIM(tid), sid = TRIM(sid);
答案 2 :(得分:0)
将像这样的列定义为varchar2非常不寻常。通常,键列将是整数,您不会遇到这种情况。
您应该考虑使用更合适的数据类型重建架构。