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

MySQLはIF()関数を短絡しますか?

    答えは「はい」です。
    mysqlクエリ内のIF(cond、expr_true、expr_false)が短絡しています。

    ここでは、@変数を使用して事実を証明するテストを行います:

    SET @var:=5;  
    SELECT IF(1 = 0, (@var:[email protected] + 1), @var ); -- using ':=' operator to modify 'true' expr @var 
    SELECT IF(1 = 1, @var, (@var:[email protected] + 1) ); -- using ':=' operator to modify 'false' expr @var 
    SELECT @var;
    

    結果は、3つのSELECTクエリすべてから「5」になります。

    IF()関数が短絡されていなかった場合、結果はSELECT#1から「5」、SELECT#2から「6」、最後の「select@var」から「7」になります。

    これは、「true」式がselect#1で実行されることはなく、false式がselect#2で実行されないためです。

    ':='演算子は、SQLクエリ(select、from、およびwhere句)内で@varを変更するために使用されることに注意してください。これから、本当に凝った/複雑なSQLを取得できます。 @varsを使用して、SQLクエリ内に「手続き型」ロジックを適用しました。

    --J Jorgenson-



    1. JDBCを使用したMySQLへのGoogleスプレッドシートの接続

    2. すべての雇用者が採用すべき7つの優れた技術習慣

    3. jdbcコードを介してmysql5.5でinパラメーターを使用して単純なクエリを試しています

    4. 複数の検索文字列を持つMySQLfind_in_set