oracle替换语句命令,oracle 下一些零散的命令和 sql 语句

本文详细介绍了SQL查询中的各种操作,包括查看表结构、数据筛选、字段修改、错误处理、日期格式化、字符串操作以及函数如NVL、DECODE、CASE WHEN等的使用。通过实例展示了如何高效地进行数据查询和处理,帮助读者提升SQL编程能力。
摘要由CSDN通过智能技术生成

select * from tab;

// 查看表字段

desc emp;

// 清屏

host cls

// 执行上一次执行过的语句

/

// 修改列宽度

col 列名 for a20(字符串)

col 列名 for 99999(数字)

// 修改错误的sql语句

跳转到指定错误行

1

修改指定数据

c /form/from

使用ed命令,弹出系统默认的编辑器

// 去重

select distinct job from emp;

// 表达式中使用可能为NULL值的处理办法

在表达式中如果使用了带有NULL的操作数,那么整个表达式的结果也是NULL,如果想避免这种情况,可以使用如下函数

nvl(comm, 0)

意思就是如果comm是NULL的情况下,那么给其返回0

// 连接两个字符串和伪表 dual

select ‘hello ‘ || ‘world’ as “hello” from dual;

select concat(‘hello ‘, ‘world’) as “hello” from dual;

// 查询1250到3000之间的数据,包含1250和3000

between 1250 and 3000

// 查询 10 或者 20 的数据

select * from emp

where deptno = 10 or deptno = 20;select * from emp

where deptno in (10, 20);select * from emp

where deptno not in (10, 20);select * from emp

where comm in (300, 500, NULL)

select * from emp

where comm not in (300, 500, NULL)     // 不允许的

// 查询带有下划线的字段

select * from emp

where ename like ‘%\_%’ escape ‘\’    // 重要的是escape告诉sql语句是用\转义

// sql语句解析方式,自右向左解析,一般把and右侧的写比较容易出错的条件,这样右侧出错后就不用再判断左侧了,or也是同样道理

// order by 可以根据字段序号排列

select ename, deptno, sal, sal * 12 from emp

order by 2 desc

// order by 可以同时作用多个列

select ename, deptno, sal, sal * 12 from emp

order by 2 desc, sal desc

// order by 对 null 的处理

select ename, deptno, sal, sal * 12, comm

from emp

order by comm desc nulls last

// 日期格式化

select to_char(sysdate + 1, ‘yyyy-mm-dd hh24:mi:ss’) from dual;

select round((sysdate – hiredate) / 365) from emp;

*不允许日期相加*

// 两个日期相差的月数

select ename, hiredate, months_between(sysdate, hiredate) / 12 from emp;

// 在某日期上加上多少个月

select to_char(add_months(sysdate, 95), ‘yyyy-mm-dd hh24:mi:ss’) from dual;

// 日期所在月的最后一天

select to_char(last_day(sysdate), ‘yyyy-mm-dd hh24:mi:ss’) from dual;

// 返回指定的下一个日期

select to_char(next_day(sysdate, ‘星期日’), ‘yyyy-mm-dd hh24:mi:ss’) from dual;

// 转换函数

date->char,number->char to_char

char->date to_date

char->number to_number

// 时间转换练习

select to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’) || ‘ 今天是 ‘ || to_char(sysdate, ‘day’) from dual;

select to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss “今天是” day’) from dual;

select to_date(‘2015-07-19 16:50:50 今天是 星期日’, ‘yyyy-mm-dd hh24:mi:ss “今天是” day’) from dual;

// 使用转换函数时一些代替值

9     数字

0     零

$     美元

L     本地货币符号

.     小数点

,     千位符

select to_char(sal, ‘L99,999.99‘) as “sal” from emp;

返回结果

sal

——————–

¥2,850.00

// case when 语法

select ename, job, sal as “张前薪水”,

case job

when ‘PRESIDENT’ then sal + 1000

when ‘MANAGER’ then sal + 800

else sal + 400

end as “涨后薪水”

from emp

order by “涨后薪水” desc;

// decode 函数,第一个和最后一个参数以外,中间的都是过滤条件

select ename, job, sal as “张前薪水”,

decode(job,

‘PRESIDENT’, sal + 1000,

‘MANAGER’, sal + 800,

sal + 400)

as “涨后薪水”

from emp

order by “涨后薪水” desc;

// 字符串转小写

select lower(‘HELLO’) from dual;

结果:hello

// 字符串转大写

select upper(‘hello’) from dual;

结果:HELLO

// 首字母大写

select initcap(‘what is your name’) from dual;

结果:What Is Your Name

// 字符串连接函数

select concat(‘hello’, ‘ world’) from dual;

结果:hello world

// 截取字符串部分内容

select substr(‘hello world’, 3) from dual;          // 从第3位开始一直到字符串最后

结果:llo world

select substr(‘hello world’, 3, 5) from dual;      // 从第3位开始截取5个字符

结果:llo w

// 获取字符串长度和所用字节数

select length(‘hello world’) from dual;

结果:11

select lengths(‘hello world’) from dual;

结果:8

// 查找一个字符串中是否包含一个子串

select instr(‘hello world’, ‘wor’) from dual;

结果:7(子串第一个字母的位置)

没找到返回0

// 填充字符串

select lpad(‘hello’, 20, ‘*’) from dual;

结果:***************hello          // 最后结果字节数是第二个参数指定的数字

select rpad(‘hello’, 20, ‘^’) from dual;

结果:hello^^^^^^^^^^^^^^^     // 同上

// 删除字符串开头和末尾的内容

select trim(‘H’ from ‘HellHo worldHH’) from dual;

结果:ellHo world          // 注意中间的是不删除的

// 替换字符串内容

select replace(‘hello world’, ‘l’, ‘*’) from dual;

结果:he**o wor*d

// 四舍五入

select round(45.29, 1) from dual;

结果:45.3

select round(45.29) from dual;

结果:45

select round(45.29, -1) from dual;

结果:50

// 截断

select trunc(15.789, 2) from dual;

结果:15.78

select trunc(15.789, 1) from dual;

结果:15.7

select trunc(15.789) from dual;

结果:15

select trunc(15.789, -1) from dual;

结果:10

// 求余

select mod(100, 30) from dual;

结果:10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值