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

tidまたはsidフィールドに目に見えない末尾のスペースがある可能性があります。空白をトリミングして、これらのフィールドをサニタイズしてみてください。

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 に答える