关闭

数据类型和运算符(三)

标签: mysql
339人阅读 评论(0) 收藏 举报
分类:

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

算术运算

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

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                                 判断一个值是否为NULL
is not null
least                                   在有两个或者多个参数时候,返回最小值
greatest                                在有两个或者多个参数时候,返回最大值
between and                             判断值是否在两个值之间
isnull
in                                      判断一个值是不是in列表中的任意一个值
not in
like                                    通配符匹配
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'regex
p '...';
+-------------------+-------------------+-------------------+-------------------
+
| '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'regex
p '....';
+-------------------+-------------------+-------------------+-------------------
-+
| '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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55521次
    • 积分:1661
    • 等级:
    • 排名:千里之外
    • 原创:110篇
    • 转载:26篇
    • 译文:0篇
    • 评论:2条
    最新评论