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

テーブル名を囲む引用符は正確に何をしますか?

    Oracleで識別子を二重引用符で囲むと、Oracleは、デフォルトの大文字と小文字を区別せずに、識別子を大文字と小文字を区別するものとして扱います。名前を二重引用符で囲んだテーブル(または列)を作成する場合は、常に二重引用符で識別子を参照し、大文字と小文字を正しく指定する必要があります(二重引用符が無意味であるすべての大文字の識別子を除く)。 。

    裏で、Oracleは常に大文字と小文字を区別する識別子の照合を行っています。ただし、照合を行う前に、大文字に二重引用符で囲まれていない識別子を常にキャストします。識別子を二重引用符で囲むと、Oracleは大文字へのキャストをスキップします。

    だからあなたが次のようなことをするなら

    CREATE TABLE my_table( 
      col1 number,
      col2 number
    )
    

    あなたができる

    SELECT * FROM my_table
    SELECT * FROM MY_TABLE
    SELECT * FROM My_Table
    SELECT * FROM "MY_TABLE"
    

    でも

    のようなもの
    SELECT * FROM "my_table" 
    

    失敗します。

    一方、あなたが次のようなことをした場合

    CREATE TABLE "my_other_table"( 
      col1 number,
      col2 number
    )
    

    できません

    SELECT * FROM my_other_table
    SELECT * FROM MY_OTHER_TABLE
    SELECT * FROM My_Other_Table
    SELECT * FROM "MY_OTHER_TABLE"
    

    しかしこれ

    SELECT * FROM "my_other_table" 
    

    動作します



    1. このPL/SQLの何が問題になっていますか?バインド変数*は宣言されていません

    2. PostgreSQLウィンドウ関数:比較によるパーティション

    3. Railsで、{adapter => postgresqlのデータベースを作成できませんでした、

    4. MySQLはデータベースにインデックスを表示します