数据类型和运算符(三)

来源:互联网 发布:网络语言打麻将 编辑:程序博客网 时间:2024/05/20 15:57

常见的运算有算术运算、比较运算、逻辑运算、位操作运算

算术运算

包括加、减、乘、除、求余

mysql> create table t7    -> (    ->    i int(11)    -> );Query OK, 0 rows affected (1.63 sec)mysql> insert into t7 values(12);Query OK, 1 row affected (0.21 sec)mysql> select i,i+10,i/2,i-1 from t7;+------+------+--------+------+| i    | i+10 | i/2    | i-1  |+------+------+--------+------+|   12 |   22 | 6.0000 |   11 |+------+------+--------+------+1 row in set (0.07 sec)mysql> select 10/0,10%-1,10%0;+------+-------+------+| 10/0 | 10%-1 | 10%0 |+------+-------+------+| NULL |     0 | NULL |+------+-------+------+1 row in set, 2 warnings (0.00 sec)

在数学运算时,除数为0的除法是没有意义的,如果为0,就返回NULL

比较运算符

含有的运算符有

=                                   <=><>(!=)                                  不等<=>=><is null                                 判断一个值是否为NULLis not nullleast                                   在有两个或者多个参数时候,返回最小值greatest                                在有两个或者多个参数时候,返回最大值between and                             判断值是否在两个值之间isnullin                                      判断一个值是不是in列表中的任意一个值not inlike                                    通配符匹配regexp                                  正则表达式匹配             

数值比较有如下规则:

1.若有一个或者两个参数为null,那么比较的结果就是null

2.若同一个比较运算中的两个参数都是字符串,就按照字符串来进行比较

3.若两个参数均为整数,则按照整数来进行比较

4.若一个字符串和数字来进行相等判断 ,那么mysql会自动将字符串转为数字

mysql> select 10=12,11<>11,10 is null,2 between 1 and 30;+-------+--------+------------+--------------------+| 10=12 | 11<>11 | 10 is null | 2 between 1 and 30 |+-------+--------+------------+--------------------+|     0 |      0 |          0 |                  1 |+-------+--------+------------+--------------------+1 row in set (0.05 sec)mysql> select 1<=>2,least(1,2,3,-1),greatest(10,100,200,99);+-------+-----------------+-------------------------+| 1<=>2 | least(1,2,3,-1) | greatest(10,100,200,99) |+-------+-----------------+-------------------------+|     0 |              -1 |                     200 |+-------+-----------------+-------------------------+1 row in set (0.06 sec)

其中应该注意的是:

<=>和=操作符执行相同的比较操作,但是<=>可以用来判断null值,在两个值均为null时候,返回值为1

like运算符用来匹配字符串,语法规则为 expr like 匹配条件,若expr或者匹配条件中任何一个为null,结果为null

like通配符:
1.%:匹配任何数目的字符,包括零字符
2._ : 只能匹配一个字符

mysql> select 'abce' like 'abc_','ab' like '%','s' like null;+--------------------+---------------+---------------+| 'abce' like 'abc_' | 'ab' like '%' | 's' like null |+--------------------+---------------+---------------+|                  1 |             1 |          NULL |+--------------------+---------------+---------------+1 row in set (0.09 sec)

regexp用来匹配正则表达式

如果regexp满足匹配条件,返回1,若其中一个为null,返回null

语法:expr regexp 匹配条件

1.^匹配任何以该字符后面的字符开头的字符串

2.$匹配任何以该字符前面的字符结尾的字符串

3..匹配任何一个单字符

4.[…]匹配在方括号内的任何字符。 [0–9] [a–z]

5.*匹配零个或者多个在他前面的字符

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

逻辑运算符

符号:not、and、or、xor、and(&&)、or(||)、位运算(|、&、^、<<、>>、~)

bin()查看1取反之后的结果,mysql经美国

mysql>  select not 10,10&&0,1 or (-1),1 xor 1,10|15,10^15,1<<4,5&~1    -> ;+--------+-------+-----------+---------+-------+-------+------+------+| not 10 | 10&&0 | 1 or (-1) | 1 xor 1 | 10|15 | 10^15 | 1<<4 | 5&~1 |+--------+-------+-----------+---------+-------+-------+------+------+|      0 |     0 |         1 |       0 |    15 |     5 |   16 |    4 |+--------+-------+-----------+---------+-------+-------+------+------+1 row in set (0.02 sec)

注意
mysql中使用特殊字符的时候需要使用转义字符

mysql中的blob和text字段类型可以存储数据量较大的文件,可以使用这些数据类型存储图像、声音或者是大容量的文本内容

mysql是不区分大小写的,因此字符串比较函数也不区分大小写。如果想要执行区分大小写的比较,可以在字符前面添加binary关键字。例如,默认情况下,’a’=’A’ 返回1 但是 binary ‘a’=’A’结果为0

0 0
原创粉丝点击