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

予期しないクエリの成功

    オプティマイザーが関数を評価する必要がないと判断した場合、評価は行われないため、関数が例外をスローすることはありません。

    select 1 from dual where 1 = 1 OR to_date('asdasdasd','asdasdasdas') > sysdate ;
    
             1
    ----------
             1
    

    この関数は、実際に評価された場合にのみ例外を発生させます。

    SQL> select 1 from dual where 1 = 1 AND to_date('asdasd','asdas') > sysdate ;
    select 1 from dual where 1 = 1 AND to_date('asdasd','asdas') > sysdate
                                                        *
    ERROR at line 1:
    ORA-01821: date format not recognized
    

    ただし、パーサーが静的に決定できる場合 クエリが無効であること-関数の引数のタイプが間違っているか、クエリのタイプが無効であるため、パーサーは、オプティマイザーがそれにスイングする前に例外を発生させます:

    SQL> select 1 from dual where 1 = 1 or to_date('asdasdasd',0) > sysdate ;
    select 1 from dual where 1 = 1 or to_date('asdasdasd',0) > sysdate
                                                             *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected DATE got NUMBER
    
    
    SQL> select 1 from dual where 1 = 1 or to_date('asdasdasd','asdasdasdas') > 42 ;
    select 1 from dual where 1 = 1 or to_date('asdasdasd','asdasdasdas') > 42
                                                                            *
    ERROR at line 1:
    ORA-00932: inconsistent datatypes: expected DATE got NUMBER
    


    1. mysqlの手順の何が問題になっていますか?

    2. GROUP BY内のすべてのアイテムの数に対するCount(*)のパーセンテージを取得する

    3. SQLServerの監視を担当するDBAに影響を与える上位3つのトレンド

    4. データベース:各言語のテーブルまたは言語列を持つ1つのテーブル