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

select''-''の意味は何ですか

    あなたはマイナスです- 1つの空の文字列から'' 他へ:

    以下を参照してください:

    mysql> select '';
    +--+
    |  |
    +--+
    |  |
    +--+
    1 row in set (0.00 sec)  
    
    mysql> select '3'-'2';
    +---------+
    | '3'-'2' |
    +---------+
    |       1 |
    +---------+
    1 row in set (0.00 sec)
    

    ただし、数字列でない場合は警告します :

    mysql> select 'a'-'b';
    +---------+
    | 'a'-'b' |
    +---------+
    |       0 |
    +---------+
    1 row in set, 2 warnings (0.00 sec)    
    

    2つの警告:

    mysql> SHOW WARNINGS LIMIT 2
        -> ;
    +---------+------+---------------------------------------+
    | Level   | Code | Message                               |
    +---------+------+---------------------------------------+
    | Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
    | Warning | 1292 | Truncated incorrect DOUBLE value: 'b' |
    +---------+------+---------------------------------------+
    2 rows in set (0.00 sec)  
    

    emptyの警告が表示されない理由 文字列?

    空の文字列は(何かをキャストした)0であるため、警告はありません。 以下を参照してください:

    mysql> SELECT 0 = '';
    +--------+
    | 0 = '' |
    +--------+
    |      1 |
    +--------+
    1 row in set (0.00 sec)   
    

    したがって、''-''を実行することによって 0 - 0を実行しています

    mysql> SELECT '' - '';
    +---------+
    | '' - '' |
    +---------+
    |       0 |
    +---------+
    1 row in set (0.00 sec)  
    

    より明確にするために、次の例を追加します(私はあなたに役立つと思います ):
    変換の方法:

    mysql> SELECT '0' = 0
        -> ;
    +---------+
    | '0' = 0 |
    +---------+
    |       1 |
    +---------+
    1 row in set (0.00 sec)  
    

    その変換に注意してください:

    mysql> SELECT '' = '0'
        -> ;
    +----------+
    | '' = '0' |
    +----------+
    |        0 |
    +----------+
    1 row in set (0.00 sec)  
    

    '' 0に変換 、'0' 0に変換 しかし'' '0'と等しくない

    mysql> SELECT '1' = 1
        -> ;
    +---------+
    | '1' = 1 |
    +---------+
    |       1 |
    +---------+
    1 row in set (0.00 sec)
    
    mysql> SELECT '' = 1
        -> ;
    +--------+
    | '' = 1 |
    +--------+
    |      0 |
    +--------+
    1 row in set (0.00 sec) 
    


    1. デフォルト値で新しいSQL列を追加する

    2. MySQL-エラー1045-アクセスが拒否されました

    3. データベース(SQL Serverなど)にトランザクションをコミットしないとどうなりますか?

    4. Yii2:フッターの列のKartikGridview合計