06_MySQL演算子

1つは、MySQL算術演算子です。

オペレーター 効果
+ 加算演算
- 減算演算
* 乗算
/ 除算演算、戻り商
剰余演算を検索し、剰余を返します

例えば:

mysql> create table tmp14 (num int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into tmp14 value(64);
Query OK, 1 row affected (0.01 sec)

mysql> select num, num+10,num-3,num*3,num/3,num%3 from tmp14;
+------+--------+-------+-------+---------+-------+
| num  | num+10 | num-3 | num*3 | num/3   | num%3 |
+------+--------+-------+-------+---------+-------+
|   64 |     74 |    61 |   192 | 21.3333 |     1 |
+------+--------+-------+-------+---------+-------+
1 row in set (0.00 sec)

オペレーター 効果
= 等しい
<=> 安全は等しい
<> 等しくない、と書くことができます!=
<= 以下
> = 以上以上
>> 以上
< 未満
>> 以上
無効です 値がNULLかどうかを判別します
nullではありません 値がnullでないかどうかを判別します
少なくとも パラメータが2つ以上ある場合は、最小値を返します
最高の パラメータが2つ以上ある場合は、最大値が返されます
との間 値が2つの値の間にあるかどうかを判断します
無効です IS NULLと同じ機能ですが、構文が異なります
値がINリスト内の値であるかどうかを判別します
ありませんで 値がINリストの値ではないかどうかを判別します
お気に入り ワイルドカードマッチング
正規表現 正規表現マッチング

1.等しい演算子(=)
等しい演算子は、数値、文字列、および式が等しいかどうかを判断するために使用されます。等しい場合、戻り値は1であり、等しくない場合、戻り値は0です。値のうちNULLの場合、比較結果はNULLです。

例えば:

mysql> select 1=0,'2'=2,(1+3)=(2+2),null=null;
+-----+-------+-------------+-----------+
| 1=0 | '2'=2 | (1+3)=(2+2) | null=null |
+-----+-------+-------------+-----------+
|   0 |     1 |           1 |      NULL |
+-----+-------+-------------+-----------+
1 row in set (0.00 sec)

2.安全な等演算子(<=>)は
、等演算子(=)と同じ関数を持っていますが、もう1つの関数がある、つまりNULL値を判断できる点が異なります。

例えば:

mysql> select 1<=>0,'2'<=>2,(1+3)<=>(2+2),null<=>null;
+-------+---------+---------------+-------------+
| 1<=>0 | '2'<=>2 | (1+3)<=>(2+2) | null<=>null |
+-------+---------+---------------+-------------+
|     0 |       1 |             1 |           1 |
+-------+---------+---------------+-------------+
1 row in set (0.00 sec)

3.不等演算子(<>または!=)
不等演算子は、数値、文字列、および式が等しくないかどうかを判断するために使用されます。等しくない場合は1を返し、等しい場合は0を返しますが、NULL値を判断することはできません。

例えば:

mysql> select 'good'<>'god',1<>2,4!=4,5.5!=5,null<>null;
+---------------+------+------+--------+------------+
| 'good'<>'god' | 1<>2 | 4!=4 | 5.5!=5 | null<>null |
+---------------+------+------+--------+------------+
|             1 |    1 |    0 |      1 |       NULL |
+---------------+------+------+--------+------------+
1 row in set (0.00 sec)

4、IS NULL、ISNULL、IS NOT NULL

  1. IS NULLおよびISNULLは、値がNULLかどうかをチェックします。NULLの場合、戻り値は1です。それ以外の場合、戻り値は0です。
  2. IS NOT NULLは、値がNULLでないかどうかをチェックします。NULLでない場合、戻り値は1です。それ以外の場合、戻り値は0です。

例:
// IS NULL

mysql> select null is null;
+--------------+
| null is null |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

// ISNULL(IS NULL構文と矛盾します、同じ効果)

mysql> select isnull(null),isnull(20);
+--------------+------------+
| isnull(null) | isnull(20) |
+--------------+------------+
|            1 |          0 |
+--------------+------------+
1 row in set (0.00 sec)

// NULLではありません

mysql> select null is not null,20 is not null;
+------------------+----------------+
| null is not null | 20 is not null |
+------------------+----------------+
|                0 |              1 |
+------------------+----------------+
1 row in set (0.00 sec)

5. BETWEEN ANDは
、値が2つの値の間にあるかどうかを判別するために使用されます

例えば:

解释:4是否在2和5之间  4是否存在4和6之间   12是否存在9和10之间  
mysql> select 4 between 2 and 5,4 between 4 and 6, 12 between 9 and 10;
+-------------------+-------------------+---------------------+
| 4 between 2 and 5 | 4 between 4 and 6 | 12 between 9 and 10 |
+-------------------+-------------------+---------------------+
|                 1 |                 1 |                   0 |
+-------------------+-------------------+---------------------+
1 row in set (0.00 sec)

6、最小、最大

  1. LEAST:2つ以上のパラメーターがある場合、最小値が返されます。値の1つがNULLの場合、返される結果はNULLです。
  2. GREATEST:2つ以上のパラメーターがある場合、最大値が返されます。値の1つがNULLの場合、返される結果はNULLです。

例えば:
least(返回最小值)

mysql> select least(2,0),least('a','c','b'),least(10,null);
+------------+--------------------+----------------+
| least(2,0) | least('a','c','b') | least(10,null) |
+------------+--------------------+----------------+
|          0 | a                  |           NULL |
+------------+--------------------+----------------+
1 row in set (0.00 sec)

greatest(返回最大值)

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

7、IN、NOT IN

  1. IN:値がINリスト内の値であるかどうかを判別します
  2. NOT IN:値がINリストの値ではないかどうかを判別します

例えば:
IN

mysql> select 2 in (1,3,4,5), 2 in (1,2);
+----------------+------------+
| 2 in (1,3,4,5) | 2 in (1,2) |
+----------------+------------+
|              0 |          1 |
+----------------+------------+
1 row in set (0.00 sec)

NOT IN

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

8、LIKE

  1. LIKE演算子は文字列を照合するために使用され、一致する場合は1を返し、一致しない場合は0を返します。
  2. LIKEは2つのワイルドカードを使用します。「%」はゼロ文字を含む任意の数の文字に一致するために使用されます。「_」は1文字にのみ一致します。

例えば:

mysql> select 'abcdefg' like 'abcdef_', 'abcdefg' like 'abcde__', 'abcdefg' like '%g';
+--------------------------+--------------------------+---------------------+
| 'abcdefg' like 'abcdef_' | 'abcdefg' like 'abcde__' | 'abcdefg' like '%g' |
+--------------------------+--------------------------+---------------------+
|                        1 |                        1 |                   1 |
+--------------------------+--------------------------+---------------------+
1 row in set (0.00 sec)

9、REGEXP

  1. REGEXP演算子は、文字列を照合するために使用されます。一致する場合は1を返し、一致しない場合は0を返します。
  2. REGEXPはいくつかのワイルドカードを使用します。
  • '^'は、何で始まる文字列と一致させるために使用されます
  • '$'は終了文字列と一致するために使用されます
  • 「。」は、任意の単一の文字列に一致するために使用されます
  • '[…]'は、角括弧内の任意の文字と一致させるために使用されます
  • 「*」は、その前にある0個以上の文字を照合するために使用されます

例えば:

mysql> mysql> select 'ssky' regexp '^s', 'ssky' regexp 'y$', 'ssky' regexp '.sky','ssky' regexp '[ab]';
+--------------------+--------------------+----------------------+----------------------+
| 'ssky' regexp '^s' | 'ssky' regexp 'y$' | 'ssky' regexp '.sky' | 'ssky' regexp '[ab]' |
+--------------------+--------------------+----------------------+----------------------+
|                  1 |                  1 |                    1 |                    0 |
+--------------------+--------------------+----------------------+----------------------+
1 row in set (0.00 sec)

2、MySQL論理演算子

オペレーター 効果
そうではない! 論理否定
andor && 論理的および
または|| 論理OR
xor 論理排他的論理和

1.論理否定(またはではない!)

  1. オペランドが0の場合、結果の値は1です。
  2. オペランドがゼロ以外の場合、結果の値は0です。
  3. オペランドがnullの場合、結果の値はnullになります

例えば:

mysql> select not 10,!10,not(1-1),!(1-1),not 1+1,not null;
+--------+-----+----------+--------+---------+----------+
| not 10 | !10 | not(1-1) | !(1-1) | not 1+1 | not null |
+--------+-----+----------+--------+---------+----------+
|      0 |   0 |        1 |      1 |       0 |     NULL |
+--------+-----+----------+--------+---------+----------+
1 row in set (0.00 sec)

2.論理積(ANDまたは&&)有假则为假

  1. すべてのオペランドがゼロ以外でNULLでない場合、結果の値は1になります。
  2. 1つ以上のオペランドが0の場合、結果の値は0になります。
  3. その他の場合、結果の値はNULLです。

例えば:

mysql> select 1 and -1, 1 && 0 , 0 and null, 1 && null;
+----------+-------+------------+-----------+
| 1 and -1 | 1 && 0 | 0 and null | 1 && null |
+----------+-------+------------+-----------+
|        1 |     0 |          0 |      NULL |
+----------+-------+------------+-----------+
1 row in set (0.00 sec)

3.論理OR(ORまたは||)

  1. 両方のオペランドがNULL以外の値であり、いずれかのオペランドがゼロ以外の場合、結果は1になり、それ以外の場合は0になります。
  2. 一方のオペランドがNULLで、もう一方のオペランドがゼロ以外の場合、結果は1になります。それ以外の場合、結果はNULLになります。
  3. 両方のオペランドがNULLの場合、結果はNULLになります。

例えば:

mysql> select 1 or -1 or 0,1 || 2,0 or null,null || null;
+--------------+--------+-----------+--------------+
| 1 or -1 or 0 | 1 || 2 | 0 or null | null || null |
+--------------+--------+-----------+--------------+
|            1 |      1 |      NULL |         NULL |
+--------------+--------+-----------+--------------+

4.論理排他的論理和(XOR)

  1. XOR bの計算は、(a AND(NOT b))または((NOT a)AND b)と同等です。
  2. いずれかのオペランドがNULLの場合、戻り値はNULLです。
  3. NULL以外のオペランドの場合、両方のオペランドの値がゼロ以外の場合、または両方の値がゼロの場合、戻り結果は0に
    なります。一方の値がゼロでもう一方の値がゼロ以外の場合、戻り結果は1になります。

例えば:

mysql> select 1 xor 1, 0 xor 0, 1 xor 0,1 xor null, 1 xor 1 xor 1;
+---------+---------+---------+------------+---------------+
| 1 xor 1 | 0 xor 0 | 1 xor 0 | 1 xor null | 1 xor 1 xor 1 |
+---------+---------+---------+------------+---------------+
|       0 |       0 |       1 |       NULL |             1 |
+---------+---------+---------+------------+---------------+
1 row in set (0.00 sec)

3ビット演算子

オペレーター 効果
| ビットまたは
ビットと
^ ビット単位のXOR
<< 左へのビットシフト
>> ビットシフト右
ビット反転

1.ビットごとのOR演算子(|)に 有1为1 无1无0
対応するバイナリビットの1つまたは2つが1の場合、ビットの結果は1になり、それ以外の場合は0になります。

mysql> select 10 | 15 ,9|4|2;
+---------+-------+
| 10 | 15 | 9|4|2 |  # 10的二进制为1010,15的二进制为1111,按位或运算之后结果为
+---------+-------+
|      15 |    15 | # 9的二进制为1001,4为0100,2的二进制为0010,按位或运算之后
+---------+-------+
1 row in set (0.00 sec)

2.ビットと演算子(&)に
対応する2進ビットはすべて1であり、ビットの演算結果は1であり、それ以外の場合は0です。

mysql> select 10 & 15 , 9 & 4 & 2;
+---------+-----------+
| 10 & 15 | 9 & 4 & 2 | #10的二进制为1010,15的为1101二进制都为1则为1
+---------+-----------+最后结果是1000,也就是10
|      10 |         0 |
+---------+-----------+
1 row in set (0.00 sec)

3.ビット単位の排他的論理和演算子(^)に
対応するバイナリビットが同じでない場合、結果は1になり、それ以外の場合は0になります。

mysql> select 10 ^ 15 ,1 ^ 0,1 ^ 1;
+---------+-------+-------+
| 10 ^ 15 | 1 ^ 0 | 1 ^ 1 |
+---------+-------+-------+
|       5 |     1 |     0 |
+---------+-------+-------+
1 row in set (0.00 sec)

4.ビット左シフト演算子(<<)
は、指定されたバイナリビットを指定されたビット数だけ左にシフトします。指定されたビットを左にシフトした後、左側の上位ビットの値がシフトアウトされて破棄され、右下位ビットの空の位置は0で埋められます

mysql> select 1<<2 ,4<<2;
+------+------+
| 1<<2 | 4<<2 | # 1的二进制值为00000001,左移两位之后变成00000100,即十进制数4
+------+------+ # 4的二进制值为00000100,左移两位之后变成00010000,即十进制数16
|    4 |   16 |
+------+------+
1 row in set (0.00 sec)

5.ビットシフト演算子(>>)
は、指定された2進数を指定された桁だけ右にシフトします。指定された桁を右にシフトした後、右側の低い方の値がシフトアウトされて破棄されます。左上は0で埋められます。

mysql> select 1>>1 ,16>>2;
+------+-------+
| 1>>1 | 16>>2 |
+------+-------+
|    0 |     4 |
+------+-------+
1 row in set (0.00 sec)

6.ビット否定演算子(〜)
は、対応する2進数をビットごとに反転します。つまり、1を反転してから0になり、0を反転してから1になります。

mysql> select 5 & ~1;
+--------+
| 5 & ~1 |
+--------+
|      4 |
+--------+
1 row in set (0.00 sec)

第四に、優先順位

最低
=(赋值运算) || or
XOR
&& AND
NOT
BETWEEN
=(比较运算) , <=>, >=, <>, <=, < > , != ,IS, LIKE, IN ,REGEXP
|
&
<<>>
- +
* /%
-(负号) ~(位取反)
!

おすすめ

転載: blog.csdn.net/weixin_45310323/article/details/110442275