Oracle学习笔记
1、创建表空间
Create tablespace 空间名
Datafile …文件路径?
Size 10M autoextend on
Eg:
create tablespace ultraeos
logging
datafile'D:\Data\Oracle\tablespace10g\ultraeos.dbf'
size32m
autoextend on
next32m maxsize2048m
extent management local;
2、创建新用记并授予权限
Create user 用户名
Identified by 用户密码// (不能以数字开头)
Default tablespace 表空间名
Temporary tablespace temp;//临时表空间为temp,系统默认
Grant connect to duly;
CONNECT 角色将允许用户连接数据库并在数据库中创建表或其它对象
Grant resource to duly;
RESOURCE角色将允许用户使用数据库中的空间
Grant create sequence to duly;
CREATE SEQUENCE 权限将允许用户创建序列,此权限包含在CONNECT连接角色中以下代码演示加一个用户SCOTT如何授权用户duly操作EMP表的对象权限
Grant select on EMP to duly;//授予查询权限
Grant update to EMP to duly,//授予修改权限
撤销已授权的用户
REVOKE 权限on 表名或表空间名FROM 用户名
如:revoke select,update on kxd FROM duly;
Eg:
-- Create the user
create user CQADMIN
identified by ""
default tablespace CQULTRA
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to CQADMIN;
grant resource to CQADMIN;
-- Grant/Revoke system privileges
grant unlimited tablespace to CQADMIN;
3、修改用户口令
Alter user 用户名
Identified by 新密码
4、删除用户
Drop user 用户名cascade;
5、创建表并对表进行操作
create table dt_eatery
(
eatery_id int primary key,//创建主键
eatery_name varchar2(30),
eatery_number varchar2(20)
)
注意:
1、表名首字符应该为字母
2、不能使用oracle中保留字
3、不能超过30个字符
4、可以使用下划线,数字和字母,但不能使用空格和单引号修改表名:
AL TER TABLE 旧表名RENAME TO 新表名
更改现有列的数据类型
Alter table 表名 modify (列名新类型)
给已有的表加主键
alter table 表名 add constraint 主键名 primary key(列名);
如:alter table dt_menu add constraint menu primary key(menu_id);表中添加列
Alter table 表名 add (列名新类型)
删除表中列
Alter table 表名 drop (column 列名)
删除表中的所以数据而保留表结构
Truncate table 表名
查看表结构
Desc 表名
6、SELECT
(1)、选择无重复的行
Select DISTINCT * from 表名
(2)、带条件和排序的SELECT命令
Select * from 表名where 条件ORDER BY列名
如:select * from dt_eatery where eatery_id = 1 ORDER BY eatery_id;
默认为顺序,如要倒序可如下:
如:select * from dt_eatery where eatery_id = 1 ORDER BY eatery_id DESC;
(3)、利用现有的表创建新表
Create table 新表名as SELECT 列名FROM 老表名WHERE 条件
7、INSERT命令
Insert into 表名(列名1,列名2……或*) VLAUES(值)
8、UPDA TE命令
Update 表名SET 列名=值WHERE 条件.
9、DELETE命令
DELETE FROM 表名WHERE 条件
10、COMMIT命令
Commit;
10、算术操作符
11、时间操作
一个月的第一天
SELECT to_date(to_char(SYSDA TE,'yyyy-mm')||'-01','yyyy-mm-dd') FROM dual
一年的第一天
SELECT to_date(to_char(SYSDA TE,'yyyy')||'-01-01','yyyy-mm-dd' ) FROM dual
季度的第一天
SELECT
to_date(to_char(SYSDA TE,'yyyy-')||lpad(floor(to_number(to_char(SYSDA TE,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd') FROM dual
上个月的最后一天
SELECT trunc(last_day(add_months(SYSDA TE,-1)))+1-1/24/60/60 FROM dual
本年的最后一天
SELECT trunc(last_day(to_date(to_char(SYSDA TE,'yyyy')||'-12-01','yyyy-mm-dd')))+1-1/24/60/60 FROM dual
本月的最后一天
select trunc(last_day(sysdate))+1-1/24/60/60 from dual
本月的第一个星期一
SELECT next_day( to_date(to_char(SYSDA TE,'yyyy-mm')||'-01','yyyy-mm-dd'),'星期一') FROM dual
去掉时分秒
SELECT trunc(sysdate) FROM dual
显示星期几
SELECT to_char(SYSDA TE,'Day') FROM dual
取得某个月的天数
SELECT trunc(last_day(SYSDA TE))-to_date(to_char(SYSDA TE,'yyyy-mm')||'-01','yyyy-mm-dd')+1 FROM dual
判断是否闰年
SELECT decode(to_char(last_day(to_date(to_char(SYSDA TE,'yyyy')||'-02-01','yyyy-mm-dd')),'dd'),'28','平年','闰年') FROM dual
一个季度多少天
SELECT
last_day(to_date(to_char(SYSDA TE,'yyyy-')||lpad(floor(to_number(to_char(SYSDA TE,'mm'))/3)*3+3,2,'0')||'-01','yyyy-mm -dd'))-to_date(to_char(SYSDA TE,'yyyy-')||lpad(floor(to_number(to_char(SYSDA TE,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd ')+1FROM dual
12、--oracal 自增主键的创建
create table example
(
ID NUMBER(10) NOT NULL PRIMARY KEY,
USERNAME V ARCHAR2(20),
PHONE V ARCHAR2(20),
ADDRESS V ARCHAR2(50)
);
--建立一个序列
CREA TE SEQUENCE emp_sequence
INCREMENT BY 1 --每次加几
START WITH 1 --从几开始计数
NOMAXV ALUE --不设置最大值
NOCYCLE --一直累加,不循环
NOCACHE --不建缓冲区
;
INSERT INTO example
(USERNAME,PHONE,ADDRESS)V ALUES('KXD','88888888','KXDSOFT')
INSERT INTO example V ALUES(emp_sequence.nextval,'KXD','88888888','KXDSOFT') insert into example (id ) values (emp_sequence.nextval)
oracle sql (2)函数 ..........................................15.ABS
返回指定值的绝对值
SQL> select abs(100),abs(-100) from dual;
ABS(100) ABS(-100)
--------- ---------
100 100
16.ACOS
给出反余弦的值
SQL> select acos(-1) from dual;
ACOS(-1)
---------
3.1415927
17.ASIN
给出反正弦的值
SQL> select asin(0.5) from dual;
ASIN(0.5)
---------
.52359878
18.ATAN
返回一个数字的反正切值
SQL> select atan(1) from dual;
ATAN(1)
---------
.78539816
19.CEIL
返回大于或等于给出数字的最小整数
SQL> select ceil(3.1415927) from dual;
CEIL(3.1415927)
---------------
4
20.COS
返回一个给定数字的余弦
SQL> select cos(-3.1415927) from dual;
COS(-3.1415927)
使用关系代数合并数据
1 关系代数
合并数据集合的理论基础是关系代数,它是由E.F.Codd于1970年提出的。在关系代数的形式化语言中:
用表、或者数据集合表示关系或者实体。
ρ用行表示元组。
ρ用列表示属性。
关系代数包含以下8个关系运算符
ρ选取――返回满足指定条件的行。
ρ投影――从数据集合中返回指定的列。
ρ笛卡尔积――是关系的乘法,它将分别来自两个数据集合中的行以所有可能的方式进行组合。ρ并――关系的加法和减法,它可以在行的方向上合并两个表中的数据,就像把一个表垒在另一个表之上一样。
ρ交――返回两个数据集合所共有的行。
ρ差――返回只属于一个数据集合的行。
ρ连接――在水平方向上合并两个表,其方法是:将两个表中在共同数据项上相互匹配的那些行合并起来。
ρ除――返回两个数据集之间的精确匹配。
此外,作为一种实现现代关系代数运算的方法,SQL还提供了:
ρ子查询――类似于连接,但更灵活;在外部查询中,方式可以使用表达式、列表或者数据集合的地方都可以使用子查询的结果。
本章将主要讲述多种类型的连接、简单的和相关的子查询、几种类型的并、关系除以及其他的内容。
2 使用连接
2.1 连接类型
在关系代数中,连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算,确保只把分别来自两个数据集合并且具有重叠部分的行合并在一起。连接的全部意义在于在水平方向上合并两个数据集合(通常是表),并产生一个新的结果集合,其方法是将一个数据源中的行于另一个数据源中和它匹配的行组合成一个新元组。
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。
连接类型定义
内连接只连接匹配的行
左外连接包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行
右外连接包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行
全外连接包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。
(H)(theta)连接使用等值以外的条件来匹配左、右两个表中的行
交叉连接生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
在INFORMIX中连接表的查询
如果FROM子句指定了多于一个表引用,则查询会连接来自多个表的行。连接条件指定各列之间(每个表至少一列)进行连接的关系。因为正在比较连接条件中的列,所以它们必须具有一致的数据类型。SELECT语句的FROM子句可以指定以下几种类型的连接
FROM子句关键字相应的结果集
CROSS JOIN 笛卡尔乘积(所有可能的行对)
INNER JOIN 仅对满足连接条件的CROSS中的列
LEFT OUTER JOIN 一个表满足条件的行,和另一个表的所有行
RIGHT OUTER JOIN 与LEFT相同,但两个表的角色互换
FULL OUTER JOIN LEFT OUTER 和RIGHT OUTER中所有行的超集
2.2 内连接(Inner Join)
内连接是最常见的一种连接,它页被称为普通连接,而E.FCodd最早称之为自然连接。下面是ANSI SQL-92标准
select * from t_institution i inner join t_teller t on i.inst_no = t.inst_no where i.inst_no = "5801"
其中inner可以省略。等价于早期的连接语法
select * from t_institution i, t_teller t where i.inst_no = t.inst_no and i.inst_no = "5801"
2.3 外连接
2.3.1 左外连接(Left Outer Jion)
select * from t_institution i left outer join t_teller t on i.inst_no = t.inst_no
其中outer可以省略。
2.3.2 右外连接(Rigt Outer Jion)
select * from t_institution i right outer join t_teller t on i.inst_no = t.inst_no
2.3.3 全外连接(Full Outer)
全外连接返回参与连接的两个数据集合中的全部数据,无论它们是否具有与之相匹配的行。在功能上,它等价于对这两个数据集合分别进行左外连接和右外连接,然后再使用消去重复行的并操作将上述两个结果集合并为一个结果集。
在现实生活中,参照完整性约束可以减少对于全外连接的使用,一般情况下左外连接就足够了。在数据库中没有利用清晰、规范的约束来防范错误数据情况下,全外连接就变得非常有用了,你可以使用它来清理数据库中的数据。
select * from t_institution i full outer join t_teller t on i.inst_no = t.inst_no
2.3.4 外连接与条件配合使用
当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQL Server 将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。下面的两个查询展示了条件放置位子对执行结果的影响:
条件在join子句
select * from t_institution i left outer join t_teller t on i.inst_no = t.inst_noand i.inst_no = “5801”
结果是:
inst_no inst_name inst_no teller_no teller_name
5801 天河区 5801 0001 tom
5801 天河区 5801 0002 david
5802 越秀区
5803 白云区
条件在where子句
select * from t_institution i left outer join t_teller t on i.inst_no = t.inst_no where i.inst_no = “5801”
结果是:
inst_no inst_name inst_no teller_no teller_name
5801 天河区 5801 0001 tom
5801 天河区 5801 0002 david
2.4 自身连接
自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。
下面例子是在机构表中查找本机构和上级机构的信息。
select s.inst_no superior_inst, s.inst_name sup_inst_name, i.inst_no, i.inst_name
from t_institution i join t_institution s on i.superior_inst = s.inst_no
结果是:
superior_inst sup_inst_name inst_no inst_name
800 广州市 5801 天河区
800 广州市 5802 越秀区
800 广州市 5803 白云区
2.5 交叉(无限制) 连接
交叉连接用于对两个源表进行纯关系代数的乘运算。它不使用连接条件来限制结果集合,而是将分别来自两个数据源中的行以所有可能的方式进行组合。数据集合中一的每个行都要与数据集合二中的每一个行分别组成一个新的行。例如,如果第一个数据源中有5个行,而第二个数据源中有4个行,那么在它们之间进行交叉连接就会产生20个行。人们将这种类型的结果集称为笛卡尔乘积。
大多数交叉连接都是由于错误操作而造成的;但是它们却非常适合向数据库中填充例子数据,或者预先创建一些空行以便为程序执行期间所要填充的数据保留空间。
select * from t_institution i cross join t_teller t
在交叉连接中没有on条件子句
Oracle服务说明
2009年02月25日星期三 19:20
注:SID - 数据库标识
HOME_NAME - Oracle Home名称,如OraHome92、OraHome81
(1)OracleServiceSID
数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为ORACLE.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。
启动服务:
c:/>net start OracleServiceSID
停止服务:
c:/>net stop OracleServiceSID
(2)OracleHOME_NAMETNSListener
监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过SQL*Net 网络协议都属于远程访问).在访问本地数据库是不需要启动这个服务。它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526。
c:/>lsnrctl start
c:/>lsnrctl stop
(3)OracleHOME_NAMEAgent
OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748。
(4)OracleHOME_NAMEClientCache
名字缓存服务,服务缓存用于连接远程数据库的Oracle Names 数据。它的缺省启动类型是手动。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。服务进程为ONRSD.EXE,参数文件NAMES.ORA,日志文件ONRSD.LOG,控制台NAMESCTL.EXE。
(5)OracleHOME_NAMECMAdmin
连接管理服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager 才需要,它的缺省启动类型是手动。服务进程为CMADMIN.EXE,参数文件CMAN.ORA,日志文件CMADM_PID.TRC,控制台CMCTL.EXE,默认端口1830。
(6)OracleHOME_NAMECMan
连接网关服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager 才需要,它的缺省启动类型是手动。服务进程为CMGW.EXE,参数文件CMAN.ORA,日志文件CMAN_PID.TRC,控制台CMCTL.EXE,默认端口1630。
(7)OracleHOME_NAMEDataGatherer
性能包数据采集服务,除非使用Oracle Capacity Planner 和Oracle Performance Manager,否则不需要启动,它的缺省启动类型是手动。服务进程为VPPDC.EXE,日志文件alert_dg.log,控制台vppcntl.exe。
(8)OracleHOME_NAMEHTTPServer
Oracle提供的WEB服务器,一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。除非你使用它作为你的HTTP服务,否则不需要启动(若启动它会接管IIS的服务),它的缺省启动类型是手动。服务进程为APACHE.EXE,参数文件httpd.conf,默认端口80。
(9)OracleHOME_NAMEPagingServer
通过一个使用调制解调器的数字传呼机或者电子邮件发出警告(没试过),它的缺省启动类型是手动。服务进程PAGNTSRV.EXE,日志文件paging.log。
(10)OracleHOME_NAMENames
Oracle Names服务,只有服务器作为Names Server才需要,它的缺省启动类型是手动。服务进程NAMES.EXE,参数文件NAMES.ORA,日志文件NAMES.LOG,控制台NAMESCTL.EXE,默认端口1575。
(11)OracleSNMPPeerMasterAgent
SNMP服务代理,用于支持SNMP的网管软件对服务器的管理,除非你使用网管工具监控数据库的情况,否则不需要启动,它的缺省启动类型是手动。服务进程为AGNTSVC.EXE,参数文件MASTER.CFG,默认端口161。
(12)OracleSNMPPeerEncapsulater
SNMP协议封装服务,用于SNMP协议转换,除非你使用一个不兼容的SNMP代理服务,否则不需要启动,它的缺省启动类型是手动。服务进程为ENCSVC.EXE,参数文件ENCAPS.CFG,默认端口1161。
(13)OracleHOME_NAMEManagementServer
OEM管理服务,使用OEM时需要,它的缺省启动类型是手动。服务进程为OMSNTSVR.EXE,日志文件oms.nohup。
数据库的备份与还原
2、用户授权
grant connect,resource,dba to business;
3、提交:
commit;
2.用数据库脚本创建数据库
如上面所述利用sqlplus以username 用户登陆,
专输入:@创建数据库的脚本名称.sql回车,即可创建数据库中的表、视图、存储过程等。
如上面所述利用sqlplus以username 用户登陆,
3.数据库数据的导入,导出
假设有两个数据库 9.0.1 与 9.0.2
1.导出数据
exp system用户/system的密码@服务器名 owner用户名=“oradial ” file="oradial. dmp"
说明:(1) 如果该命令是在本地执行,则不用指定服务器名
(2) owner用户名,通过sys用户的登录所创建的用户名。同时授予的权限包括
connect , dba , resource ,还要创建表空间。
(3) system用户名,owner用户名是9.0.1数据库中的用户
2.导入数据
imp system用户/system的密码@服务器名 file=oradial.dmp fromuser(用户名)=oradial touser(用户名)=abc
说明:(1) 如果该命令是在本地执行,则不用指定服务器名
(2) touser用户名,通过sys用户的登录所创建的用户名。同时授予的权限包括
Oracle维护常用SQL语句2008-08-05 10:52
Oracle维护常用SQL语句
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3、查看回滚段名称及大小
select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curext CurExtent
From dba_rollback_segs r, v$rollstat v
Where r.segment_id = https://www.doczj.com/doc/65542706.html,n(+)
order by segment_name ;
4、查看控制文件
select name from v$controlfile;
5、查看日志文件
select member from v$logfile;
6、查看表空间的使用情况
select sum(bytes)/(1024*1024) as free_space,tablespace_name
from dba_free_space
group by tablespace_name;
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AV AIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;
7、查看数据库库对象
select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;
8、查看数据库的版本
Select version FROM Product_component_version
Where SUBSTR(PRODUCT,1,6)='Oracle';
9、查看数据库的创建日期和归档方式
Select Created, Log_Mode, Log_Mode From V$Database;
10、捕捉运行很久的SQL
column username format a12
column opname format a16
column progress format a8
select username,sid,opname,
round(sofar*100 / totalwork,0) '%' as progress,
time_remaining,sql_text
from v$session_longops , v$sql
where time_remaining <> 0
and sql_address = address
and sql_hash_value = hash_value
/
11、查看数据表的参数信息
SELECT partition_name, high_value, high_value_length, tablespace_name, pct_free, pct_used, ini_trans, max_trans, initial_extent,
next_extent, min_extent, max_extent, pct_increase, FREELISTS,
freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,
empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size, last_analyzed
FROM dba_tab_partitions
--WHERE table_name = :tname AND table_owner = :towner ORDER BY partition_position
12、查看还没提交的事务
select * from v$locked_object;
select * from v$transaction;
13、查找object为哪些进程所用
select
p.spid,
s.sid,
s.serial# serial_num,
https://www.doczj.com/doc/65542706.html,ername user_name,
a.type object_type,
s.osuser os_user_name,
a.owner,
a.object object_name,
decode(sign(48 - command),
1,
to_char(command), 'Action Code #' to_char(command) ) action,
p.program oracle_process,
s.terminal terminal,
s.program program,
s.status session_status
from v$session s, v$access a, v$process p
where s.paddr = p.addr and
s.type = 'USER' and
a.sid = s.sid and
a.object='SUBSCRIBER_ATTR'
order by https://www.doczj.com/doc/65542706.html,ername, s.osuser
14、回滚段查看
select rownum, sys.dba_rollback_segs.segment_name Name, v$rollstat.extents
Extents, v$rollstat.rssize Size_in_Bytes, v$rollstat.xacts XActs,
v$rollstat.gets Gets, v$rollstat.waits Waits, v$rollstat.writes Writes,
sys.dba_rollback_segs.status status from v$rollstat, sys.dba_rollback_segs,
v$rollname where v$https://www.doczj.com/doc/65542706.html,(+) = sys.dba_rollback_segs.segment_name and
v$https://www.doczj.com/doc/65542706.html,n (+) = v$https://www.doczj.com/doc/65542706.html,n order by rownum
15、耗资源的进程(top session)
select s.schemaname schema_name, decode(sign(48 - command), 1,
to_char(command), 'Action Code #' to_char(command) ) action, status
session_status, s.osuser os_user_name, s.sid, p.spid , s.serial# serial_num,
nvl(https://www.doczj.com/doc/65542706.html,ername, '[Oracle process]') user_name, s.terminal terminal,
s.program program, st.value criteria_value from v$sesstat st, v$session s , v$processp
where st.sid = s.sid and st.statistic# = to_number('38') and ('ALL' = 'ALL'
or s.status = 'ALL') and p.addr = s.paddr order by st.value desc, p.spid asc, https://www.doczj.com/doc/65542706.html,ername asc, s.osuser asc
ORACLE日志路径:/export/home/oracle/admin/cqwlzc/bdump/alert_cqwlzc.log为当前日志几个特实用的函数
ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual;
A A ZERO SPACE
--------- --------- --------- ---------
65 97 48 32
2. CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;
ZH C
-- -
赵 A
3. CONCAT
连接两个字符串;
SQL> select concat(010-,88888888)||转23 高乾竞电话from dual;
高乾竞电话
----------------
010-********转23
4. INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap(smith) upp from dual;
UPP
-----
Smith
5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(oracle traning,ra,1,2) instring from dual;
INSTRING
---------
9
6.LENGTH
返回字符串的长度;
SQL> select name,length(nam e),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst; NAME LENGTH(NAME) ADDR LENGTH(ADDR) SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ --------- --------------------
高乾竞 3 北京市海锭区 6 9999.99 7
7.LOWER
返回字符串,并将所有的字符小写
SQL> select lower(AaBbCcDd)AaBbCcDd from dual;
AABBCCDD
--------
aabbccdd
8.UPPER
返回字符串,并将所有的字符大写
SQL> select upper(AaBbCcDd) upper from dual;
UPPER
--------
AABBCCDD
9.RPAD和LPAD(粘贴字符)
RPAD 在列的右边粘贴字符
LPAD 在列的左边粘贴字符
SQL> select lpad(rpad(gao,10,*),17,*)from dual;
LPAD(RPAD(GAO,1
-----------------
*******gao*******
不够字符则用*来填满
10.LTRIM和RTRIM