二.二.十.五 like 匹配通配符 返回值 为0 (假) 1(真)
通配符有两种:
1 .% 任意长度的任意字符,包括0长度的字符。
2 . _ 任意的单个字符。 长度只能是1.
select '两个蝴蝶飞' like '%蝴蝶%','两个蝴蝶飞' like '_个蝴蝶飞','两个蝴蝶飞' like '%老蝴蝶%';
如果想找不匹配的, 用 note like
select '两个蝴蝶飞' not like '%蝴蝶%','两个蝴蝶飞' not like '_个蝴蝶飞','两个蝴蝶飞' not like '%老蝴蝶%';
二.二.十.六 regexp 正则表达式匹配 返回值 为0 (假) 1(真)
关于正则表达式,这儿就不讲解了。 以后会有专门的一系列去讲解正则表达式。
select 123456 regexp '^12','两个蝴蝶飞' regexp '蝴蝶飞$','abcd132' regexp 'cd13','abcd' regexp 'cde';
用 regexp 与 like 基本是相同的。
如上面的那些语句,是可以等价于 like 的。
123456 regexp ‘^12’ 等价于 123456 like ‘12%’
‘两个蝴蝶飞’ regexp ‘蝴蝶飞$’ 等价于 ‘两个蝴蝶飞’ like ‘%蝴蝶飞’
‘abcd132’ regexp ‘cd13’ 等价于 ‘abcd132’ like ‘%cd13%’;
也有不匹配的, 用 not regexp
select 123456 not regexp '^12','两个蝴蝶飞' not regexp '蝴蝶飞$', 'abcd132' not regexp 'cd13','abcd' not regexp 'cde';
推荐MySQL最好使用 regexp. 但实际生活中, like 用得比较多。
除了 least() 和greatest() 之外,其他比较运算符 返回的值 都是 0 (假) 1(真).
三. 逻辑运算符
三.一 拥有的运算符
在MySQL数据库里面, 1 代表着真,0代表着假, 非 0 代表着 真。
三.二 not 或者! 非
select not 8, not 0, !5,!0;
真为假, 假为真。
三.二 and 或者 && 与
select 3 and 2, 5 and 0,0 and 5, 0 and 0;
两个同时为真,才为真。
三.三 or 或者 || 或
select 3 or 2, 5 or 0,0 or 5, 0 or 0;
两个只要有一个为真,就为真。
三.四 xor 异或
select 1 xor 0, 1 xor 1, 0 xor 0, 0 xor 1;
两个数 相同为假,不同为真。 相同指的是在逻辑上相同。 1与2 都是真,是相同的。
四. 位运算符
四.一 拥有的运算符
3 表示成二进制就是
00000000 00000000 00000000 00000011
5 表示成二进制就是
00000000 00000000 00000000 00000101
四.二 ~ 取反
select ~3;
00000000 00000000 00000000 00000011 =3 11111111 11111111 11111111 11111100 =18446744073709551612
其中, bin() 方法是查询 该数的二进制数。 如果前面为0,就省略。
四.三 & 取与
select 3&5;
00000000 00000000 00000000 00000011= 3 & 00000000 00000000 00000000 00000101=5 00000000 00000000 00000000 00000001=1
四.四 | 取或
select 3|5;
00000000 00000000 00000000 00000011= 3 | 00000000 00000000 00000000 00000101=5 00000000 00000000 00000000 00000111=7
四.五 << 左移
相当于 数字* 2^n;
select 3<<2;
00000000 00000000 00000000 00000011= 3 <<2 00000000 00000000 00000000 00000011 00000000 00000000 00000000 0001100=12
四.六 >> 右移
相当于 数字/2^n;
select 5>>2;
00000000 00000000 00000000 00000101=5 >>2 00000000 00000000 00000000 000001 01 00000000 00000000 00000000 000001=1
位操作与 java中的位操作是一样。
五. 运算符的优先级
谢谢!!!