Oracle:查询表,但没有结果

时间:2013-08-30 07:33:14

标签: sql oracle

我有两张桌子:

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)"?

有什么关系

3 个答案:

答案 0 :(得分:1)

检查两个表中是否有相同的tid。如果你看到两个都有相同的id但仍然没有结果,那么你在末尾有尾随空格或任何specail字符(因为ID在这里被称为Varchar)。尝试修剪您的查询。

SELECT *
FROM student s, teacher t
WHERE trim(s.tid) = trim(t.tid);

答案 1 :(得分:0)

您的tidsid字段可能包含不可见的尾随空格。尝试通过修剪空白来清理这些字段:

UPDATE teacher SET tid = TRIM(tid);
UPDATE student SET tid = TRIM(tid), sid = TRIM(sid);

答案 2 :(得分:0)

将像这样的列定义为varchar2非常不寻常。通常,键列将是整数,您不会遇到这种情况。

您应该考虑使用更合适的数据类型重建架构。