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

sqlfiddle(oracle)のselectクエリで列名を使用できません

    [TL; DR] 最も簡単なこと オブジェクト名を二重引用符で囲むことは絶対にせず、Oracleにデフォルトの方法で大文字小文字の区別を管理させるだけです。

    ただし、SQLFiddleでは二重引用符を使用できます:

    SQLフィドル

    Oracle11gR2スキーマのセットアップ

    CREATE TABLE products
    ("P_Id" int, "ProductName" varchar2(10), "UnitPrice" numeric, "UnitsInStock" int, "UnitsOnOrder" int)
    //
    
    INSERT ALL 
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (1, 'Jarlsberg', 10.45, 16, 15)
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (2, 'Mascarpone', 32.56, 23, NULL)
    INTO products ("P_Id", "ProductName", "UnitPrice", "UnitsInStock", "UnitsOnOrder")
     VALUES (3, 'Gorgonzola', 15.67, 9, 20)
    SELECT * FROM dual
    //
    

    クエリ1

    SELECT "ProductName" FROM products
    

    結果

    | ProductName |
    |-------------|
    |   Jarlsberg |
    |  Mascarpone |
    |  Gorgonzola |
    

    Oracleデータベースは、デフォルトで大文字と小文字が区別されます。ただし、デフォルトでは、大文字と小文字の区別がユーザーから抽象化されるように、すべてが大文字に変換されます。 Oracleが識別子に指定した大文字小文字を使用するのは、二重引用符を使用する場合のみです。

    CREATE TABLEで引用符で囲まれた識別子を使用したため ステートメントでは、SELECTで引用符で囲まれた識別子も使用する必要があります テーブルの作成に使用された正確な大文字と小文字を区別するステートメント。

    したがって、列名はProductNameではありません "ProductName"です (二重引用符付き)。

    より良い解決策は、二重引用符を使用しないことです:

    SQLフィドル

    Oracle11gR2スキーマのセットアップ

    CREATE TABLE products(
      P_Id         int,
      ProductName  varchar2(10),
      UnitPrice    numeric,
      UnitsInStock int,
      UnitsOnOrder int
    )
    //
    
    INSERT INTO products ( P_Id, ProductName, UnitPrice, UnitsInStock, UnitsOnOrder )
      SELECT 1, 'Jarlsberg', 10.45, 16, 15 FROM DUAL UNION ALL
      SELECT 2, 'Mascarpone', 32.56, 23, NULL FROM DUAL UNION ALL
      SELECT 3, 'Gorgonzola', 15.67, 9, 20 FROM DUAL
    //
    

    クエリ1

    SELECT ProductName FROM products
    

    結果

    | PRODUCTNAME |
    |-------------|
    |   Jarlsberg |
    |  Mascarpone |
    |  Gorgonzola |
    


    1. 現在のタイムスタンプからMySQLの1時間ごとの内訳を生成する

    2. SQL UPDATE構文–DBMSによってリストされます

    3. このPHPMySQL登録フォームが機能しないのはなぜですか?

    4. MySQLが存在する場合は、挿入するか、他のことを行います