算术运算符
+ - * /(div) %(mod)
dual 表示伪表
select 100,100+2,12.5,100-13.5,100+50-30 from dual;
整数
在sql中,+ 不表示连接,也没有连接作用,仅仅表示加法运算
如果一个字符串与数值相加,会将字符串转换为数值(隐式转换)
如果无法转换则会将其当成 0 来处理
select 100+'1' from dual; 这里可以转换成功
select 100+'a' from dual ; 这里的a就无法转换为数值类型,则将a当成0 ;
浮点数
sql中 整数/整数=浮点数
分母为0,结果则为null
取模运算
取模的结果是 正 还是 负 取决于 被除数 是正是负
比较运算符
= 在sql中 = 就是 ==
<=> 安全等于
与等于类似,不同之处在于,用于null的比较
< > 或 != 表示不等于
< <=
> >=
注:
两边都是字符串的时候,按照ANSI的比较规则进行比较
只要null参与判断,结果就为null
非类型运算符
is null; 判断一个值,字符串或表达式是否为空
select last_name ,manager_id from employees where manager_id is null;
is not null; 判断一个值。字符串或表达式是否不为空
select last_name ,manager_id from employees where manager_id is not null;
least(a,b,c,……) 在多个值中返回最小值
select least(5,6,7) from dual;
greatest(a,b,c,……) 在多个值中返回最大值
select greatest(5,6,7) from dual;
between 条件1(上界) and 条件2(下界) (查询条件1 和条件2范围内的数据,包括边界)
select salary from employees where salary between 3000 and 6000;
in(a,b,c,……) 用于判断给定的值是否是 in列表中的一个值,如果是返回1,否则返回0。
如果给定的值为null,或则in列表中存在null,则结果为null
select 'a'in('a','b','c') from dual;
not in(a,b,c,……) 用于判断给定的值是否不是not in列表中的一个值,如果不是返回1,否则返回0。
select 'x' not in('a','b','c') from dual;
like 模糊查询
like运算符主要用来匹配字符串,如果满足了条件返回1,否则返回0,如果给定的值为null 或匹配条件为null,则返回 null。
"%":匹配多个字符
"_":只能匹配一个字符
select first_name from employees **where ** first_name like '_s%';
escape关键字
用来指定任意字符充当转义字符
如果使用 \ 来表示转义,则要省略 escape ,如果不是则要加上escape
select job_id from jobs where job_id like 'IT$_%' escape '$';
指定 $ 字符为转义字符
regexp 正则表达式
用来匹配字符串
语法格式为:‘要进行匹配的字符串’ regexp 匹配条件。
‘^’:匹配以该字符 后面字符 开头的 字符串
‘$’:匹配以该字符 前面字符 结尾的 字符串
‘ . ’:匹配任何一个单字符
select 'shat' regexp '^s' from dual;
select 'float' regexp 't$' from dual;