sql >> データベース >  >> RDS >> Oracle

テーブルからデータを挿入/クエリするときのORA-00904

    DDL の引用符で列名を指定したようです。

    Oracle では、引用符の下の識別子は大文字と小文字が区別されると見なされるため、列名が「本文」または「年」のテーブルを作成しても、クエリで本文または年が解決されません。引用符を省略すると、大文字のバリアントが考慮されるためです。

    したがって、これがある場合:

     create table driver_case (registration varchar2(60), 
                          make varchar2(60),
                          model varchar2(60),
                          gvw number,
                          "year" number, 
                          "body" varchar2(60));
    

    そしてやってみる

    select year, body from driver_case
    

    次に、Oracle は列 "YEAR"、"BODY" を見つけようとします (引用符のない識別子は大文字に変換されることに注意してください)。これは、テーブル内の "year"、"body" とは異なります。

    あなたのソリューションは?

    • DDL の引用符の下に列名を記載しない
    • 上記の点を無視する場合は、しなければなりません すべての DML ステートメントで、引用符の下に列名を記載してください。

    この SQL Fiddle で上記の点を示します。



    1. SQLエラー:ORA-12899:値が列に対して大きすぎます

    2. Mysqlは、ストアドプロシージャで一時的にauto_increment列を無効にします

    3. mysqlでGROUPBYを使用するときに、MAX()である最長のテキストフィールドを選択するにはどうすればよいですか?

    4. SQL Server 2008 でテーブルをエクスポートする