Oracle常用SQL函数整理
--返回ASCII码
select ASCII('A') "A的ASCII码" ,ASCII('a') "a的ASSCII码" from dual ;
--反向
select CHR(65) from dual;
--连接两个字符串,如果一个为空则返回有值的
select concat('Oracle','11g') "合并后" from dual;
--返回字符串中 每个 单词首字母大写
select initcap('oracle universal installer') "首字母大写后" from dual;
--返回一个字符在字符串'j'中从第6个开始第3次出现的位置
select INSTR ('jjjjjireutoilkjsdflkdsjfoiuewrlkdsjflkoieuroiu','j',-6,3) from dual ;
--返回字符串长度
select length('oituoireutoilkjsdflkdsjfoiuewrlkdsj') from dual; --6为正数时,j的位置
select length('jjjjjireutoilkj') from dual; --6为负数时,j的位置,从左往右数,但是返回值是正数位置
--去掉一个字符串从左边开始,包含'iuyu'的字符
select LTRIM('iuuuuyyuyuyuyuyuidsfdysytu','iuyu') from dual;
--替代字符串中指定的字符为指定的字符
select replace ('opopiiuopoijiuu','o','A') from Dual;
-------------------------------------------数字类函数
--返回大于或等于n的 最小整数
select ceil(9.02) from dual; --向上取整
--返回小于或等于n 的 最大整数
select floor(8.6345) from dual;--向下取整
--sign 若正 返回1 若负 返回-1
select sign(9) from dual; --可以根据状态,比较大小
FLOOR——对给定的数字取整数位--向下取整
SQL> select floor(2345.67) from dual;
FLOOR(2345.67)
--------------
2345
CEIL-- 返回大于或等于给出数字的最小整数--向上取整
SQL> select ceil(3.1415927) from dual;
CEIL(3.1415927)
---------------
4
ROUND——按照指定的精度进行四舍五入
SQL> select round(3.1415926,4) from dual;
ROUND(3.1415926,4)
------------------
3.1416
TRUNC——按照指定的精度进行截取一个数
SQL> select trunc(3.1415926,4) from dual;
ROUND(3.1415926,4) 3.1415
------------------
------------------------------------------------------------------
select sysdate from dual;
--取结果集前51条
select *
from (select a.factorvalue,'1','105A'
from productdata.femriskfactorlistb a
where 1 = 1
and a.riskcode = '106001003'
and a.factortype = 'TextAge'
order by a.factorvalueorder)
where rownum <= 51;
----正则替换
select regexp_replace('87Y','[^0-9]') from dual;----87
--查询重复记录并删除
DELETE SDBANKMAPPINGTEST WHERE ID IN(
SELECT (comcode) from SDBANKMAPPINGTEST
group by (comcode) having count(*)>1 );
-- Add/modify columns
alter table test_daoru rename column NEW_FIELD_NAME to name;
--删除一个字段
alter table test_daoru
drop column ;
---快读插入N条数据-----------------------------------------------------------------------------
declare
i integer; --定义变量
begin
i := 18;
loop
/* 插入数据 feeyear缴费期限 period保险期间 */
insert into sh_1044_nv(textage,sex,feeyear,period,amnt,cod1)
values(
TO_CHAR(i||'Y'),'1','1000Y','10Y','','10000'
);
/* 参数递增 */
i := i + 1;
/* 停止条件 */
exit when i > 60;
end loop;
commit;
end;
---Oracle自动序列号--------------------------------------------
create sequence <序列名称>
start with <起始数>
increment by <增长量>
[maxvalue 值]
[minvalue 值]
[cycle 当到达最大值的时候,将继续从头开始]
[Nocycle -- 一直累加,不循环]
[Cache ]
----------------------------------------------------------
--创建一个方法通过生日得到年龄
create or replace function GetAge(brithday varchar2) return number as
v_Age number(3);
begin
select to_char(sysdate, 'yyyy') -
to_char(to_date(brithday, 'yyyy-mm-dd'), 'yyyy') +
decode(sign(to_char(sysdate, 'mmdd') -
to_char(to_date(brithday, 'yyyy-mm-dd'), 'mmdd')),
-1,
-1,
0,
0,
1,
0)
into v_Age
from dual;
return v_Age;
end;
----------------------------------------------------------
--3.查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode
SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,
s.terminal, s.logon_time, l.type
FROM v$session s,v$lock l
WHERE s.sid = l.sid
AND s.username IS NOT NULL
ORDER BY sid;
----------------------------------------------------------
--锁表查询
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
--==================
--释放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';
----------------------------------------------------------
---查看数据库空间大小
select a.tablespace_name,
a.bytes / 1024 / 1024 "Sum MB",
(a.bytes - b.bytes) / 1024 / 1024 "used MB",
b.bytes / 1024 / 1024 "free MB",
round(((a.bytes - b.bytes) / a.bytes) * 100, 2) "percent_used"
from (select tablespace_name, sum(bytes) bytes
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, sum(bytes) bytes, max(bytes) largest
from dba_free_space
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by ((a.bytes - b.bytes) / a.bytes) desc;
----------------------------------------------------------
--修改字段长度
alter table test_feilv_01 modify ( textage varchar2(10))
----------------------------------------------------------
--汇总
select decode(grouping(a.scene_id) + grouping(a.enter_id),
1,'小计',
2,'总计',
a.enter_id) "公司编码",
decode(grouping(a.scene_id), 1, count(*) || '条', a.scene_id) "报文编号"
--sum(f_pagesnumber) sum_pagesnumbers
from tft_xsl_template a
group by rollup(a.enter_id, a.scene_id);
----------------------------------------------------------
--oracle 中的替换
regexp_replace(1,2,3,4,5,6)
语法说明:1:字段 2:替换的字段 3:替换成什么 4:起始位置(默认从1开始) 5:替换的次数(0是无限次) 6:不区分大小写
----------------------------------------------------------
/*1. 利用游标循环更新、删除MemberAccount表中的数据*/
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
FETCH NEXT FROM My_Cursor; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
/*2. 利用游标循环更新MemberService表中的数据(更新每个用户所购买服务的时间)*/
DECLARE @UserId varchar(50)
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT UserId FROM dbo.MemberAccount) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @UserId; --读取第一行数据(将MemberAccount表中的UserId放到@UserId变量中)
WHILE @@FETCH_STATUS = 0 BEGIN PRINT @UserId; --打印数据(打印MemberAccount表中的UserId)
UPDATE dbo.MemberService SET ServiceTime = DATEADD(Month, 6, getdate()) WHERE UserId = @UserId; --更新数据
FETCH NEXT FROM My_Cursor INTO @UserId; --读取下一行数据(将MemberAccount表中的UserId放到@UserId变量中)
END CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
----------------------------------------------------------
Oracle常用SQL函数整理的更多相关文章
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用ora ...
- oracle(sql)基础篇系列(一)——基础select语句、常用sql函数、组函数、分组函数
花点时间整理下sql基础,温故而知新.文章的demo来自oracle自带的dept,emp,salgrade三张表.解锁scott用户,使用scott用户登录就可以看到自带的表. #使用oracle用 ...
- ORACLE 常用字符函数
ORACLE 常用字符函数1 ASCII(arg1)返回参数arg1的十进制数字表示.如果数据库设置为ASCII,则采用的是ASCII码字符.如果设置为EBCDIC,则采用的是EBCDIC字符 sel ...
- oracle的sql函数
只读事务set transaction read only当一个用户添加了只读事务,则查询时只会查到设置只读事务之前的内容,在并发量大的系统中,通过设置只读事务 便于统计 oracle的sql函数的使 ...
- oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- 常用sql语句整理:mysql
## 常用sql语句整理:mysql1. 增- 增加一张表```CREATE TABLE `table_name`( ... )ENGINE=InnoDB DEFAULT CHARSET=utf8 ...
- 常用SQL函数
—————常用SQL函数(实例简述)————— 数据库环境:DB2数据库: 执行工具:Toad for DB2 1.转字符串:to_char() 日期类型:to_char(birthday,'yyy ...
- 常用WinAPI函数整理------------转载
常用WinAPI函数整理原创 玩撕你 发布于2019-09-04 20:06:55 阅读数 101 收藏展开 之前的博客写了很多关于Windows编程的内容,在Windows环境下的黑客必须熟练掌握底 ...
随机推荐
- 启动了VSAN服务的主机不在vCenter集群中
背景: 这个问题的来源是,某用户将该ESXi主机直接夺取到另一个vCenterA的管辖中,而这个vCenterA中集群A开启了VSAN功能,导致再次反向夺取到vCenterB中的时候带有了来自于集群A ...
- Js 变量声明提升和函数声明提升
Js代码分为两个阶段:编译阶段和执行阶段 Js代码的编译阶段会找到所有的声明,并用合适的作用域将它们关联起来,这是词法作用域的核心内容 包括变量声明(var a)和函数声明(function a(){ ...
- 工厂方法模式——创建型模式02
1. 简单工厂模式 在介绍工厂方法模式之前,先介绍一下简单工厂模式.虽然简单工厂模式不属于GoF 23种设计模式,但通常将它作为学习其他工厂模式的入门,并且在实际开发中使用的也较为频繁. (1 ...
- LeetCode[3] Longest Substring Without Repeating Characters
题目描述 Given a string, find the length of the longest substring without repeating characters. For exam ...
- PHP中遍历XML之SimpleXML
简单来讲述一些XML吧,XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言.XML是当今用于传输数据的两大工具之一,另外一个是json. 我们在PHP中使用XML也是用来传输数据, ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- Python 基础之一变量和赋值
变量:程序在运行的时候会用到很多临时存储数据,这个时候就用到了变量,临时数据的名字. Python中变量不需要声明,直接可以使用,变量的数据类型由赋值确定. >>> name=&qu ...
- ReactiveCocoa代码实践之-UI组件的RAC信号操作
上一节是自己对网络层的一些重构,本节是自己一些代码小实践做出的一些demo程序,基本涵盖大多数UI控件操作. 一.用UISlider实现调色板 假设我们现在做一个demo,上面有一个View用来展示颜 ...
- VisualStudio 2015 开启IIS Express可以调试X64项目
现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢. 如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 ...