0

我有 2 张桌子:

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

4

3 回答 3

1

检查两个表中的 tid 是否相同。如果您看到两者都具有相同的 id 并且仍然没有结果,那么您在末尾有尾随空格或任何特殊字符(因为 ID 在此处称为 Varchar)。在您的查询中尝试修剪。

SELECT *
FROM student s, teacher t
WHERE trim(s.tid) = trim(t.tid);
于 2013-08-30T07:44:33.833 回答
0

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

UPDATE teacher SET tid = TRIM(tid);
UPDATE student SET tid = TRIM(tid), sid = TRIM(sid);
于 2013-08-30T07:58:51.243 回答
0

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

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

于 2013-08-30T08:06:10.617 回答