oracle date 默认值11中定义默认值是个公式

1768人阅读
㊣ Oracle-Basic ㊣(13)
Oracle database 11g中的初始化参数可达上千个。下面我们介绍一些核心的参数。
1、diagnostic_dest
在11g中,有一种新的存储诊断信息的结构,称为自动诊断信息库(Automaticd Diagnostic Repository ADR)。
用些参数指定目录位置,如$ORACLE_BASE/diag/rdbms/orcl/orcl。其中第一个orcl为数据库名,第二个orcl为实例名。
2、 fixed_date
是11g中的一个新的参数,它允许设置sysdate返回常量日期,而不是当前日期。如fixed_date=yyyymm-dd hh24:mi:ss
默认为无,如fixed_date=none。些参数可以动态设置。
3、与审计有关的参数
(1)audit_trail
此参数用来打开或关闭数据库的审计功能。如果不打开,那么设置此参数为none或false,如audit_trail=none。
如果要打开审计,那么可以设置下面的值:
os Oracle将审计记录写入一个操作系统文件。
db Oracle将审计信息记录到sys下的aud$表中。
db,extended 类似于db设置,但提供了扩展信息,如sys.aud$.sqlbind和sqltext列。
xml 允许将审计信息以xml的形式写到os文件。
xml,extended& 类似于xml,并添加扩展信息sqlbind,sqltext。
如audit_trail=db
无默认值,此参数为静态类型。
(2)audit_file_dest
如果设置audit_trail=os,或xml,xml,extended,那么此参数用于设置审计信息的目录位置。
如:audit_file_dest=$ORACLE_BASE/admin/orcl/audit
默认值:$ORACLE_HOME/rdbms/audit
参数类型:动态,可以用alter system .....deferred修改。
(3)audit_sys_operations
如果设置此参数为true,Oracle将审计sys用户或具有sysdba和sysoper角色的用户的所有活动,并将审计信息写入到文件或表。
如:audit_sys_operations=true
默认值:false
参数类型:静态
(4)ldap_directory_sysauth
是11g中的一个新参数,它允许或禁止对sysdba或sysoper权限的目录授权,值为yes或no。
如:ldap_directory_sysauth=yes
默认值:无
参数类型:静态
4、与数据库名和其他常用的参数
(1)db_name和db_unique_name
db_name用来设置数据库的名字,此参数为强制性参数。db_name与ORACLE_SID环境变量的值相同。db_name最多为8个字符。
如:db_name=orcl
默认值:false
参数类型:静态
db_unique_name指定全局唯一数据库名。
(2)db_domain
此参数指定数据库的完全限定名或叫做域名,这个名称一般与拥有数据库的组织机构名称相同。
如:db_domain=world
默认值:null
参数类型:静态
(3)instance_name
此参数用于指定实例的名称,在单一实例中,instance_name与db_name具有相同的值;在RAC中,可以给单个数据库服务分配多个实例。
如:instance_name=orcl
默认值:实例SID
参数类型:静态
(3)service_name
此参数为数据库服务提供一个名字,通常它是数据库名和数据库域的组合
如:service_name=orcl.world
默认值: db_name.db_domain
参数类型:动态,可以用alter system修改。
(4)compatible
此参数用来设置数据库的版本
如:copatible=11.1.0
默认值:11.1.0
参数类型:静态
(5)instance_type
此参数用来指定实例是一个数据库实例还是自动存储管理实例。
如:instance_type=asm
&默认值:rdbms
& 参数类型:静态
(6)nls_date_format
此参数用来设置Oracle默认的日期格式。
如:nls_date_format=yyyy-mm-dd hh24:mi:ss
默认值:取决于nls_territory变量和操作系统。
参数类型:半动态半静态,可以用alter session修改,但不可以用alter system修改。
5、与文件有关我参数
(1)ifile
可以使用ifile在init.ora文件中嵌入其他初始化参数。
如:ifile=config.ora
默认值:无
参数类型:静态
(2) control_files
用此参数指定控制文件。控制文件的最小数目为1,Oracle建议,至少每个实例有两个控制文件。
如:control_file=($ORACLE_BASE/oradata/orcl/cont01.ctl,$ORACLE_BASE/oradata/orcl/cont02.ctl)
默认值:视操作系统而定
参数类型:静态
(3)control_file_record_keep_time
此参数指定Oracle保留控制文件中记录的天数,Oracle建议为此参数设置一个较高的值,以保留所有控制文件中联机磁盘备份信息。
如:control_file_record_wkkp_time=31
默认值:7
参数类型:动态,可以使用alter system修改
(4)utl_file_dir
在使用utl_file程序包读写操作系统文件时,可用utl_file_dir参数指定Oracle用来处理的IO目录。
如:utl_file_dir=$ORACLE_BASE/utl_dir
默认值:none 表示不使用
参数类型:静态
6、与管理的文件有关的参数
如果决定使用OMF(Oracle Managed File Oracle管理文件)这个特性时,需要用两个参数来定义其格式,分别如下:
(1)db_create_file_dest
此参数指定管理文件的默认目录。
如:db_create_file_dest=$ORACLE_BASE/admin/orcl/dbfile
默认值:无
参数类型:动态,可以用alter system 或session修改其格式
(2)db_create_online_log_dest_n
此参数指定OMF联机重做日志文件和控制文件的默认位置。
如:db_create_online_log_dest_1=$ORACLE_BASE/admin/orcl/log
默认值:无
参数类型:动态,可以用alter system或sessin修改
&7、进程和会话参数
&(1)processes
此参数设置并发连接到数据库进程数据的上限。
如:processed=500
默认值:6
参数类型:静态
(2)db_writer_processed
此参数指定实例数据库写进程的初始数目
如:db_writer_processes=8
默认值:1
参数类型:静态
(3)open_cursor
此参数设置单个会话在给定时间内可具有打开游标的数目限制。
如:open_cursor=300
默认值:50
参数类型:动态,可以用alter system修改
&8、内在配置参数
(1)memory_target
在使用自动内在管理给Oracle实例分配内在时,用此参数memory_target指定分配给Oracle的内在。单位为KB,MB,GB
如:memory_target=1024M
默认值:0
参数类型:动态
(2)memory_max_target
此参数设置memory_target参数设置的最大值,范围从0到Oracle实例可用的最大内存。
如:memory_max_target=2G
默认值:0
参数类型:静态
如果指定了memory_target而忽略了memory_max_target,那么,memoery_max_target的值与memoery_target的值相同。
(3)db_cache_size
此参数设置那些具有基本块大小(由db_block_size定义块大小)的缓存区的默认缓存池大小。
如:db_cache_size=720M
默认值:如果指定了memory_target参数,则此参数默认为0,否则,默认值大于48M或4M
参数类型:动态,可用alter system修改
(4)db_keep_cache_size
&缓冲池通常对放于其中的对象做同样的处理,只要缓冲区高速缓冲有可用的空间,那么任何对象将保留在池中。录池满的时,将删除最老的对象,为新对象腾出空间。
有两个专门的缓冲区池(保存池和回收池)允许在对象创建时指出希望缓冲区如何处理特定的对象。
此参数用来设置保存池的大小
如:db_keep_cache_size=500M
默认值:0,表示不配置此参数
参数类型:动态,可用alter system修改
(5)db_recycle_cache_size
此参数用来指定缓冲区高速缓冲回收池的大小。
如:db_recycle_cache_size=200M
默认值:0,表示不配置此参数
参数类型:动态
(6)db_nk_cache_size
此参数用来指定非标准大小的缓冲区高速缓冲。n可以使用2,4,8,32作为参数。
如:db_8k_cache_size=4096M
默认值:0
参数类型:动态
(7)client_result_cache_lag
此参数用来指定OCI客户机查询做出另一个往返的最长时间。单位为秒
如:client_result_cache_lag=1000
默认值:500(秒)
参数类型:静态
(8)client_result_cache_size
此参数指定对每个进程结果集调整缓冲,分配给客户机的最大内存。
如:client_result_cache_size=80M
默认值:0
参数类型:静态
(9)control_management_pack_access
此参数用来激活服务器的两个管理程序包。
诊断程序包:如:awr,addm等。
调优程序包:如;SQL Tuning Advisor,SQl Access Advisor等
如:control_management_pack_access=AWR
默认值:diagnostic+tuning
参数类型:动态,可以用alter system修改
(10)large_pool_size
此参数可以理解为是共享池的一个变种,是一个升级。可以使用此参数最大限度释放用于高速缓冲SQL查询和数据字典信息共享池。
如:large_pool_size=1G
默认值:0
参数类型:动态,可以使用alter system修改
9、归档日志参数
(1)log_archive_dest_n
其中n=1,2,3....10最多10个位置。此参数用来指定归档日志的位置。数据库仅在归档模式下才使用此参数。
如:log_archive_dest_1='location=$ORACLE_BASE/admin/orcl/arch'
默认值:无
参数类型:动态,可以使用alter system或session指定
(2)log_archive_format
此参数用来指定归档重做日志文件名的默认格式。格式参数如下:
%t 代表线程号,%s&代表日志序列号 %r 代表重做日志ID
如: log_archive_format='log%t_%s_%r.arc'
默认值:视操作系统而定
参数类型:静态
10、撒销空间参数
(1)undo_management
如果将undo_management设置为auto,则表示使用撒销空间来存储撒锁记录。Oracle将自动管理撒锁段。
如:undo_management=auot
默认值:auto
参数类型:静态
(2)undo_tablespace
此参数指定撒销记录的默认表空间,如果没有撒销表空间,则Oracle将把system回退段用于撒销存储。如果创建数据库时,没有指定此参数,并且选择了AUM(automatic unod management),Oracle将创建一个名为undotbs的默认表空间,此默认表空间具有一个10MB的数据文件,该文件会自动扩展,没有最大限制。
&如:undo_tablespace=undotbs
l默认值:一个可用的撒销表空间
参数类型:动态,可以用alter system修改。
(3)undo_retention
此参数指定在被覆盖前可以保留撒销表空间中的重要信息量,单位为秒。
如:undo_retention=14400 (4小时)
默认值:900秒
参数类型:动态,可以使用alter system修改
11、Oracle许可证参数
Oracle软件的使用受到Oracle和客户之间的认证协议的限制,有两个重要的参数,如下:
(1)license_max_sessions
此参数设置任何时候你可以拥有的最大并发会话。一旦数据库达到此限额,新会话就不能连接。并出现数据库达到用户最大限额的警告,如果此参数为0,则数据库不实施会话许可证。
如:license_max_sessions=300
默认值:0
参数类型:动态,可以使用alter system修改
(2)license_max_users
此参数指定可在数据库中创建的最大用户数目。
如:license_max_users=1500
默认值:0
参数类型:动态,可以使用alter system修改
12、与性能和诊断有关的参数
(1)statistics_level
此参数用来设置Oracle收集统计信息的级别,值分别为:basic,typical,all。
值为basic时,禁止收集Oracle database 11g特性和功能需要的许多重要的统计数据,这此性能和功能包括如下:
所有服务器生成的预警
Automatic Shared Memory Management
自动化程序统计数据的收集
缓冲区高速缓冲和MTTR
计时统计数据
值为typical时,数据库将收集自身管理所需要的重要的统计数据,并且将提供最全面的性能。
设置为all时,Oracle将收集额外的统计数据,如计时OS统计数据和计划执行统计数据。
如:statistics_level=typical
默认值:typical
参数类型:动态,可以使用alter system修改
(2)optimizer_capture_sql_plan_baselines
此参数通过启用可重复SQL语句的捕捉和这些语句的SQL计划的生成。
如:optimizer_capture_sql_plan_baselines=true
默认值:false
参数类型:动态,可以使用alter system修改
(3)optimizer_mode
此参数指定Oracle查询优化程序执行的类型,值如下:
all_rows:查询优化程序对所有的SQL语句使用基于成本的方法,以最大吞吐量,最小资源为目标进行优化。
first_rows_n:查询优化程序使用基于成本的方法并以最短影响时间返回前n行为目标进行优化
first_rows:查询优化程序结合成本和启发式来寻找快速返回前几行的最好计划(此参数保持向后兼容性)。
如:optimizer_mode=first_rows_100
默认值: all_rows
参数类型:动态,可以用alter system修改
(4)optimizer_features_enable
此参数允许数据库升级后,保持旧版本的行为。如:从11.1升级到11.2,可以设置此参数为11.1,从保持11.1优化程序的行为。
如:optimizer_features_enable=11.1.1
默认值:11.2.3.0
参数类型:动态,可以使用alter system修改
(5)optimizer_dynamic_sampling &
当一个对象无收集任何统计信息时,Oracle将动态采样收集一个简要的统计数据集。此参数用来设置动态采样的级别。
如:optimizer_dynamic_sampling=2
默认值:视版本而定
参数类型:动态,可以用alter system修改
(6)optimizer_use_invisible_indexes
此参数用来设置启用或禁用不可见索引
如:optimizer_use_invisible_indexes=true
默认值:false
参数类型:动态,可以用alter system修改
(7)optimizer_use_pending_statistics
此参数指定成本优化程序是否使用未决的统计数据
如:optimizer_use_pending_statistics=true
默认值:false
参数类型:动态,可以使用alter system修改
(8)optimizer_use_sql_plan_baselines
此参数用来启用或禁用存储在数据库中的SQL计划基线,如果你启用SQL Plan Management,优化程序将查看SQL计划基线并选择最低成本计划。
如:optimizer_use_sql_plan_baselines=true
默认值:false
参数类型:动态,可以用alter system修改
(9)plsql_code_type
此参数指定允许对plsql库单元指定本机或解释编译方式,可以取值,native,interpreted.
如:plsql_code_type=natice
默认值:interpreted
参数类型:动态,可以使用alter system修改
(10)result_cache_max_result
此参数指定单个结果集可使用的结果高速缓存的百分比,取值为从1到100
如:result_cache_max_result=25
&默认值:5
参数类型:动态,可以使用alter system修改
(11)result_cache_max_size
此参数指定结果高速缓存可以使用SGA的最大值。此参数为0,表示禁用结果高速缓存。
如:result_cache_max_size=500M
默认值:取决于memary_target,sga_target,shared_pool
参数类型:动态,可以使用alter system修改
(12)result_cache_mode
此参数指定对于一条SQL,数据库何时使用内存中的结果高速缓冲。如果设置为manual,则必须在数据库查询中使用result_cahce提示以高速缓存结果,如果指定force,只要有可能,数据库将试图高速缓存所有语句结果。
如:result_cache_mode=force
默认值:manual
参数类型:动态,可以使用alter system修改
(13)sec_case_sensitive_logon
此参数启用或禁用密码大小写,可以取值true或false
如sec_case_sensitive_logon=true
默认值:true
参数类型:动态,可以使用alter system修改
(14)sec_max_falied_login_attempts
此参数指定客户机尝试身份验证的最大次数,达到最大次数后,服务器进程将自动取消连接尝试,最小值为1
如:sec_max_falied_login_attempts=3
默认值:10
参数类型:动态,可以用alter system修改
(15)query_rewrite_enabled
此参数启用或禁用查询重写
如:query_resrite_enabled=false
默认值:true
参数类型:动态,可以使用alter system修改
(16)query_rewrite_integrity
此参数指定查询重写中Oracle强制实施完整性规则的程度,值分别如下:
trusted:Oracle假定实体化视图是当前的,并且允许不是由Oracle强制实施的关系进行查询重写
enforced:Oracle不使用依赖于未实施的关系的转换,此模式总是使用最新的数据,保证了一致性和完整性。
stale tolerated:Oracle允许使用查询重写未实施的关系
如:query_rewrite_integtiy=trusted
默认值:enforced
参数类型:动态
(17)cursor_sharing
此参数为初始化参数中一个重要的参数,用来指定Oracle的SQL语句应该如何共享游标。它的值分别为:forced,exact,similar。
如:cursor_sharing=forced
默认值:exact
参数类型:动态
(18)db_block_size
此参数用来设置标准数据库块的大小(以字节为单位)。标准大小可以设置在2K到32K之间。
如:db_block_size=32768(32K)
默认值:8192(8K)
参数类型:静态
(19)db_file_mutliblock_read_count
此参数指定全表扫描中,Oracle将读取的最大块数。此参数的越大,全表扫描通常越有效。单位为K。
如:db_file_mutiblock_size=32
默认值:视平台而定
参数类型:动态
(20)sql_trace
此参数用来打开或关闭SQL跟踪程序。如果要调优某个查询或一组查询时,可以将其打开。一般情况下,不要将其打开,因为开销很大。
如:sql_trace=true
默认值:false
参数类型:动态
(21)timed_statistics
此参数用来指定Oracle在跟踪中是否收集计时统计数据。如果收集计时统计数据,则它们被用于某些动态性能视图中。
如:timed_statistics=true
默认值:如果将statistics_level设置为typical或all,则为true,否则为false
参数类型:动态
&13、与恢复有关的参数
(1)db_recovery_file_dest_size
此参数指定闪回恢复区的大小
如:db_recovery_file_dest_size=2G
默认值:无
参数类型:动态
(2)db_recovery_file_dest
此参数指定闪回恢复区的默认位置
如:db_recovery_file_dest=$ORACLE_BASE/'flash_recovery_area/orcl
默认值:无
参数类型:动态
(3)db_flashback_retention_target
此参数指定可闪回数据库多长时间,单位为分。闪回特性取决于闪回日志,此参数指示闪回日志保留的时间长度,能够闪回数据多少取决于Oracle在闪回恢复区中保留了多少数据。
如:db_flashback_retention_targert=2880
默认值:1440
参数类型:动态
(4)resumable_timeout
此参数允许或禁止可恢复的空间的分配特性并在系统级指定可继续执行的暂停。例如:如果设置resumable_target=3600,则在出错前,数据库将挂起任何可继续执行的空间类型的操作并等待一小时。
如:resumable_target=7200
默认值:0
参数类型:动态
13、讹误检查参数
(1)db_lost_write_protect
此参数允许或禁止写丢失检查,主要用在Data Gurad环境,对数据库起备用或主数据库的作用。可取值为none,typical,full
如:db_lost_write_prodect=typical
默认值:none
参数类型:动态
(2)db_ultra_safe
可利用此参数来管理那些控制数据库保护级别的参数(如db_block_checking,db_block_checksum)的默认设置。值如下:
off:如果设置设置后面那些参数中的任意一个,则数据库不进行任何更改:db_block_checking,db_block_checksum或db_lost_write_protect。
data_only:数据库将db_block_checking参数设置为medium,将db_lost_write_protect参数设置为typical,将db_block_checksum设置为full。
data_and_index:数据库将db_block_checking设置为full,其它参数的值同data_only
如:db_ultra_safe=data_and_index
默认值:off
参数类型:静态
(3)db_block_checksum
此参数用来设置块校验级别,如果设置为full,Oracle将在内存中的任何讹误写到磁盘之前发现它。建议设置为typical,开销较小。如果设置为off,则DBWn仅对于System表空间计算校验和。
如:db_block_checksum=full
默认值:typical
参数类型:动态
(4)db_block_checking
使用此参数,可设置数据库检查讹误块。其值分别如下:
off或false:数据库不对除system表空间外的表空间进行检查
low:在更改内存中的块内容后,数据库只进行基本功块头检查。
medium:除了low设置下进行的检查外,数据库还对所有非索引组织表块进行语义块检查。
full或true:数据库进行low和medium下的所有检查,此外还对索引块进行语义检查。
如:db_block_checking=full
默认值:false
参数类型:动态
(5)db_securefile
此参数指定数据库希望把大对象作为11g中的新文件类型SecureFile处理,还是作为传统的BasicFile处理。如果将此参数设置为never,则数据库将创建你指定的SecureFile的所有lobs作为传统的Basicfile处理。
如:db_securefile=always
默认值:permitted
参数类型:动态
&15、与安全有关的参数
(1)os_authent_prefix
Oracle使用此参数的值作为操作系统用户名的前缀。默认值为ops$,Oracle建议将此参数值设置为空串。
如:os_suthent_prefix=&&
默认值:ops$
参数类型:静态
(2)remote_login_passwordfile
此参数指出,Oracle是否需要验证而检查一个密码文件,以及多个数据库可使用此密码文件。如果将此参数设置为none,Oracle将忽略任何密码文件,所有的授权用户都必须通过操作系统验证。如果设置为shared,Oracle将查找一个密码文件以确认非sys用户以外的用户。如设置为exclusive,只允许一个数据库使用密码文件,该数据库可以包括sys和非sys用户。
如:remote_login_passwordfile=shared
&默认值:exclusive
参数类型:静态
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:93298次
积分:2128
积分:2128
排名:第17256名
原创:123篇
转载:11篇
(1)(6)(3)(1)(2)(1)(3)(3)(2)(1)(4)(7)(4)(4)(47)(5)(2)(2)(6)(3)(1)(13)(1)(5)(5)(4)Oracle&11g&sys,system,scott密码没有设置解决办法
从今天开始接触Oracle这个强大的数据库,暂时还没有体会到其强大的功能。之前听说Oracle安装挺复杂什么的,自己刚才真正装了一次后才知道,其实一路默认就可以了,当然速度会很慢点,我的I3处理器还比较给力,20分钟不到就搞定了,我的版本是11g的11.12.0。当然一路无脑的默认也是不明智,安装运行起来才发现,密码设置那一项跳过去了,而且也没有保存默认的密码文档,在网上找了很多解决方法都没有搞定,在一个前辈不经意的提醒下,找到了解决方法,如下:
登录的时候可以用SQL&sqlplus/ as sysdba
会提示你输出密码,直接回车,你发现竟然可以登录,至于这个sqlplus的级别小弟暂时还不知,接下来SQL&alter user
sys identified by admin(这个你随意设置); 执行后你发现提示:
用户已经更改
这就意味着你的sys密码被改成了admin,知道sys的密码后你就可以SQL&conn sys/admin as
sysdba,你就是老大了,你可以修改system和scott的密码了,其实scott的默认密码是tiger,可以直接用,不过第一次登录会提示你修改的,如果你是变成测试用这个也挺好的。
总结处理如下:
SQL*Plus: Release 11.2.0.1.0 Production on 星期一 1月 10 22:25:16
Copyright (c) ,
Oracle.& All rights
请输入用户名:&
sqlplus/ as sysdba
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -
Production
With the Partitioning, OLAP, Data Mining and Real Application
Testing options
SQL& alter user sys
用户已更改。
SQL& conn sys/admin as
SQL& alter user system identified by
用户已更改。
SQL& alter user scott
用户已更改。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Oracle11g常用函数(Functions)详解
ADD_MONTHS. 4
ASCIISTR. 5
BFILENAME. 6
BIN_TO_NUM... 6
BITAND.. 7
CARDINALITY. 7
CHARTOROWID.. 8
COALESCE. 9
COMPOSE. 9
CONVERT. 10
CURRENT_DATE. 11
CURRENT_TIMESTAMP. 11
DBTIMEZONE. 12
DECODE. 12
EXTRACT (datetime) 14
FROM_TZ. 16
GREATEST. 16
GROUPING.. 16
GROUPING_ID.. 17
HEXTORAW... 17
INITCAP. 18
LAST_DAY. 19
LENGTH.. 19
LOCALTIMESTAMP. 20
LTRIM... 21
MEDIAN.. 22
MONTHS_BETWEEN.. 23
NEXT_DAY. 24
NULLIF. 24
NUMTODSINTERVAL. 25
NUMTOYMINTERVAL. 25
RAWTOHEX. 27
REGEXP_COUNT. 27
REGEXP_INSTR. 28
REGEXP_LIKE. 28
REGEXP_REPLACE. 29
REGEXP_SUBSTR. 29
REMAINDER. 29
REPLACE. 30
ROUND(date) 30
ROUND(NUMBER) 31
ROWIDTOCHAR. 31
RTRIM... 32
SESSIONTIMEZONE. 32
SOUNDEX. 33
STDDEV. 33
SUBSTR. 34
SYS_CONNECT_BY_PATH.. 34
SYS_CONTEXT. 35
SYS_EXTRACT_UTC. 35
SYS_GUID.. 35
SYSDATE. 35
SYSTIMESTAMP. 36
TIMESTAMP_TO_SCN.. 36
TO_BINARY_DOUBLE. 36
TO_BINARY_FLOAT. 37
TO_BLOB. 38
TO_CHAR(CHARACTER) 38
TO_CHAR(DATETIME) 38
TO_CHAR(NUMBER) 39
TO_CLOB. 39
TO_DATE. 40
TO_DSINTERVAL. 40
TO_MULTI_BYTE. 41
TO_NUMBER. 41
TO_SINGLE_BYTE. 41
TO_TIMESTAMP. 41
TO_TIMESTAMP_TZ. 42
TO_YMINTERVAL. 42
TRANSLATE. 42
TRIM... 43
TRUNC(DATE) 43
TRUNC(NUMBER) 43
USERENV. 44
VARIANCE. 44
作者:wugy ()
注:如发现错误请Email
返回n的绝对值。
n为数值数据类型,或者可以隐式转化为数值类型的其他数据类型。
SELECTABS(-) result FROM
&& &RESULT
----------
ACOS ( n )
返回n的反余弦值。n的值必须在-1到1之间;返回值的范围从0到pi。
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
SELECT ACOS(-1)result FROM
&& &RESULT
----------
ADD_MONTHS ( date,integer )
返回date加上integer个月后的日期。一个月是由会话(session)参数NLS_CALENDAR来定义的。
date是一个日期时间值或可以隐式转化为DATE的其他值。integer是一个整数或其他可以转化为整数的值。返回值永远是DATE数据类型。如果date是一个月的最后一天,或者得到结果的月份的天数比date所在月份的天数时,返回结果是结果月份的最后一天。
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM
----------
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM
----------
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('','YYYY-MM-DD'),1),'YYYY-MM-DD') result FROM
----------
SELECTTO_CHAR(ADD_MONTHS(TO_DATE('','YYYY-MM-DD'), 1.9),'YYYY-MM-DD') result FROM
----------
ASCII ( char )
返回char的第一个字符在数据库字符集中的十进制表示。
char可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,或者能转化成它们的其他数据类型。
SELECT ASCII('甲骨文') result FROM
&&& RESULT
----------
&&& &42450
SELECTASCII('Oracle') result FROM
----------
&&&&& &&79
ASCIISTR ( char )
返回字符串char在数据库字符集中的ASCII版本。非ASCII字符将会转化成\XXXX的格式,其中XXXX是UTF-16编码单元。
SELECT ASCIISTR('甲骨文') result FROM
RESULT&&&&&&&&
---------------
SELECTASCIISTR('Oracle') result FROM
ASIN ( n )
返回n的反正弦值。
n必须在-1到1之间。返回值的范围在-pi/2到pi/2。
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
SELECT ASIN(1)result FROM
&&& RESULT
----------
ATAN ( n )
返回n的反正切值。n的取值没有范围;而返回值的范围在-pi/2到pi/2之间。
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
SELECT ATAN(1)result FROM
&& &RESULT
----------
ATAN2 ( n1, n2 )
返回n1与n2的反正切值。等同于ATAN(n1/n2)。
n可以为任意数值类型或可以隐式转化成数值的其他类型。如果n是BINARY_FLOAT,则返回值的类型是BINARY_DOUBLE,否则返回值的类型与参数的数据类型相同。
SELECT ATAN2(1,0)result FROM
&&& RESULT
----------
SELECT ATAN2(-.1,0)result FROM
& &&RESULT
----------
-1.5707963
AVG ( [DISTINCT|ALL]expr )
返回expr的平均值。
expr可以为任意数值类型或可以转化为数值类型的其他类型。返回值的数据类型与expr的数据类型相同。
SELECT AVG(DISTINCTsal) result FROM scott.
&&& RESULT
----------
SELECT AVG(ALL sal)result FROM scott.
&&& RESULT
----------
BFILENAME ('directory', 'filename' )
返回一个关于directory和filename的BFILE定位器。
directory是一个DIRECTORY对象。filename是服务器文件系统的一个文件名。
作为SYSDBA
CREATE DIRECTORYMEDIA_DIR AS '/home/oracle';
GRANT READ ONDIRECTORY MEDIA_DIR TO TEST;
CREATE TABLEtest_bfile (id NUMBER, bfiles BFILE);
INSERT INTOtest_bfile VALUES (1, BFILENAME('MEDIA_DIR', 'uname.txt'));
BIN_TO_NUM ( expr [,expr, ...] )
将字节向量转化成等值的NUMBER。
每个expr不是0就是1。
SELECTBIN_TO_NUM(1,1,0,0) result FROM
&& &RESULT
----------
&&&&&& &12
BITAND ( expr1,expr2 )
返回expr1与expr2进行位与运算的结果。
expr1和expr2都是NUMBER,结果也是NUMBER。如果其中一个参数为NULL,结果也为NULL。
SELECT BITAND(
&&&&&& BIN_TO_NUM(1,1,0,0),
&&&&&& BIN_TO_NUM(1,0,1,1)) result FROM
&&& RESULT
----------
&&&&&&&& 8
CARDINALITY (nested_table )
返回内嵌表中元素的个数。
返回值的类型是NUMBER。如果内嵌表是空的,或者是一个null集合,则返回NULL。
CREATE OR REPLACETYPE test_nestedtable AS TABLE OF VARCHAR2(20);
CREATE TABLE test_nt(id NUMBER, nt test_nestedtable) NESTED TABLE nt STORE AS nt_
INSERT INTO test_nt VALUES(1, test_nestedtable('hello', 'nested', 'table'));
SELECT id, CARDINALITY(nt) FROM test_
&&&&&&& ID CARDINALITY(NT)
-------------------------
&&&&&&&& 1&&&&&&&&&&&&&& 3
CAST ( { expr | MULTISET ( subquery ) } AS type_name )
将一种内置的数据类型或集合类型转化成另一种内置的数据类型或集合类型。CAST不支持LONG,LONG RAW。
数据类型可以为BINARY_FLOAT,BINARY_DOUBLE,CHAR,VARCHAR2,NUMBER,DATETIME,INTERVAL,RAW,ROWID,UROWID,NCHAR,NVARCHAR2。
SELECT CAST(TO_DATE('','YYYY/MM/DD')AS TIMESTAMP WITH LOCAL TIME ZONE) result FROM
RESULT&&&&&&&&&&&&&&&&&&&&&&&&&&&&
-----------------------------------
07-OCT-.000000 AM +08:00
CREATE OR REPLACETYPE cust_address_typ
&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&AS OBJECT
&&& ( street_address&&&& VARCHAR2(40)
&&& , postal_code&&&&&&& VARCHAR2(10)
&&& , city&&&&&&&&&&&&&& VARCHAR2(30)
&&& , state_province&&&& VARCHAR2(10)
&&& , country_id&&&&&&&& CHAR(2)
CREATE TYPE address_book_tAS TABLE OF cust_address_
CREATE TABLEcust_address (
& custno&&&&&&&&&&& NUMBER,
& street_address&&& VARCHAR2(40),
& postal_code&&&&&& VARCHAR2(10),
& city&&&&&&&&&&&&& VARCHAR2(30),
& state_province&&& VARCHAR2(10),
& country_id&&&&&&& CHAR(2));
CREATE TABLEcust_short (custno NUMBER, name VARCHAR2(31));
INSERT INTOcust_short VALUES (1, 'TEST');
INSERT INTOcust_address VALUES (1, 'O STREET', '9900', 'ORACLE', 'DATABASE', 'CN');
SELECT s.custno,s.name,
& CAST(MULTISET(SELECT ca.street_address,ca.postal_code, ca.city, ca.state_province, ca.country_id
&&&&&&&&&&&&&&& FROM cust_address ca
&&&&&&&&&&&&&&& WHERE s.custno = ca.custno)
& AS address_book_t)
FROM cust_short s
ORDER BY s.
CUSTNO NAME& RESULT(STREET_ADDRESS,POSTAL_CODE,CITY,STATE_PROVINCE,COUNTRY_ID)
&&&&&&&&&&&
------ -----------------------------------------------------------------------
&&&& 1 TEST&ADDRESS_BOOK_T(CUST_ADDRESS_TYP(O STREET,9900,ORACLE,DATABASE,CN))
CEIL ( n )
返回大于或等于n的最小整数。
n可以为任意数值类型或可以隐式转化成数值的其他类型。返回值的类型与参数的数据类型相同。
SELECT CEIL(1234.5)result FROM
&&& RESULT
----------
&&&&& 1235
CHARTOROWID ( char )
将CHAR,VARCHAR2,NCHAR或NVARCHAR2的数据类型转换成ROWID数据类型。
select rowid, id fromtest_nt
wherechartorowid('AAAVLjAAEAAAADmAAA') =
ROWID&&&&&&&&&&&&&&&&&&&&& ID
----------------------------
AAAVLjAAEAAAADmAAA&&&&&&&&& 1
CHR ( n [ USINGNCHAR_CS ] )
返回拥有二进制编码n的字符,如果使用NCHAR_CS,就使用数据库字符集。对于单字节字符集,如果n大于256,那么会先进行n mod 256取余数的操作。
n是一个NUMBER类型的值,或者可以转化成NUMBER的其他类型的值。返回值是一个字符。
select CHR(42450)
CHR(42450)
----------
COALESCE ( { expr [,expr ] ... } )
返回第一个非NULL的值,至少有两个expr。
expr的数据类型必须一致。
select COALESCE (null, 123, '123')
select COALESCE (null, 123, '123') from dual
&&&&&&&&&&&&&&&&&&&&&&&&&&&& *
Error at line 1
ORA-00932:inconsistent datatypes: expected NUMBER got CHAR
select COALESCE (null, 123, 456)
COALESCE(NULL,123,456)
----------------------
&&&&&&&&&&&&&&&&&& 123
COMPOSE ( char )
将参数的字符串转化成相同字符集下的Unicode字符串。
char可以为CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB。
SELECT COMPOSE( 'a'|| UNISTR('\0308') )& FROM DUAL;
COMPOSE('A'||UNISTR('\0308'))
-----------------------------
CONCAT ( char1,char2 )
返回值是char1连接char2,效果与连接符||一样。
char1和char2可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB或NCLOB。
select CONCAT('Hello ', 'Oracle')
RESULT&&&&&
------------
Hello Oracle
CONVERT ( char,dest_char_set [, source_char_set ] )
将char从字符集source_char_set转成dest_char_set。CHAR和VARCHAR2的返回值是VARCHAR2;NCHAR和NVARCHAR2的返回值是NVARCHAR2;CLOB的返回值是CLOB;NCLOB的返回值是NCLOB。
char可以是CHAR,VARCHAR2,NCHAR,NVARCHAR2,CLOB和NCLOB。
select CONVERT('甲骨文', 'US7ASCII', 'ZHT16MSWIN950')
CORR ( expr1, expr2)
返回一组数值对的相对系数。
with tmp as
(select 'a' cd, 95n1, 86 n2 from dual
select 'a' cd, 100n1, 95 n2 from dual
select 'a' cd, 58n1, 65 n2 from dual)
select CORR(n1,n2)result
&&& RESULT
----------
返回n的余弦值。
n可以为任意数值类型或可以转化成数值的其他类型。如果n是BINARY_FLOAT,那么返回值是BINARY_DOUBLE;否则返回值类型与参数类型一样。
SQL& SELECT COS(180* 3. / 180) result FROM DUAL;
&&& RESULT
----------
&&&&&&& -1
COUNT ( { * } | { [DISTINCT | ALL ] expr } )
返回查询结果的行数。如果指定了expr,将返回expr不为NULL的行数。DISTINCT会排除重复的行;ALL包含重复的行。指定‘*’时,会返回所有的行,包括重复的和NULL的行。COUNT永远不会返回NULL。
SQL& SELECTCOUNT(*) FROM scott.
& COUNT(*)
----------
&&&&&&& 14
CURRENT_DATE
返回会话时区的当前日期时间(使用Gregorian日历)。
SQL& ALTERSESSION SET NLS_DATE_FORMAT ='YYYY/MM/DD HH24:MI:SS';
Session altered.
SQL& SELECTSESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE&&&&& CURRENT_DATE
---------------------------------------
+08:00&&&&&&&&&&&&&&
SQL& ALTERSESSION SET TIME_ZONE = '0:0';
Session altered.
SQL& SELECTSESSIONTIMEZONE, CURRENT_DATE FROM DUAL;
SESSIONTIMEZONE&&&&& CURRENT_DATE
---------------------------------------
+00:00&&&&&&&&&&&&&&
CURRENT_TIMESTAMP (precision )
返回会话时区的当前日期和时间,包括小数秒。返回值类型是TIMESTAMP WITH TIME ZONE。如果没有指定precision,默认为6。LOCALTIMESTAMP和CURRENT_TIMESTAMP之间的区别是LOCALTIMESTAMP返回一个TIMESTAMP类型的值,而CURRENT_TIMESTAMP返回一个TIMESTAMP WITH TIME ZONE类型的值。
SQL& SELECTTO_CHAR(SESSIONTIMEZONE) result FROM DUAL
& 3&SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL
& 5& SELECTTO_CHAR(LOCALTIMESTAMP) FROM DUAL;
-----------------------------------------------------
+08:00
10-OCT-.860798 PM
10-OCT-.860798 PM +08:00
DBTIMEZONE
返回数据库的时区,格式为‘[+|-]TZH:TZM’或者时区名。
SQL& SELECT DBTIMEZONEFROM DUAL;
+00:00
DECODE ( expr, {search, result [, ...] } [, default] )
DECODE比较每个expr的值,如果expr等于其中一个search,那么返回相应的result。如果没有匹配的值,返回default。如果没有default,返回NULL。在DECODE中,Oracle认为两个NULL是匹配的,所以如果expr是NULL,就会返回第一个为NULL的search的相应的result。DECODE函数中,包括expr,search,result和default,一共可以有255个组件。
参数必须是数值或字符类型。
SQL& SELECTENAME, DECODE(SIGN(SAL-4000),1,'RICH',0,'MIDDLE','LOW') result
& 2& FROMSCOTT.EMP;
ENAME&&&&& RESULT
---------- ------
SMITH&&&&& LOW
ALLEN&&&&& LOW
WARD&&&&&& LOW
JONES&&&&& LOW
MARTIN&&&& LOW
BLAKE&&&&& LOW
CLARK&&&&& LOW
SCOTT&&&&& LOW
KING&&&&&& RICH
TURNER&&&& LOW
ADAMS&&&&& LOW
ENAME&&&&& RESULT
---------- ------
JAMES&&&&& LOW
FORD&&&&&& LOW
MILLER&&&& LOW
DEREF ( expr )
返回参数expr的对象引用,expr必须返回一个对象的REF。如果在查询中没有使用这个函数,Oracle会返回该REF的对象ID。
SQL& CREATE TYPEtest_ref_typ_new AS OBJECT
& 2& (idNUMBER, name VARCHAR2(20));
Type created.
SQL& CREATE TABLEtest_ref OF test_ref_typ_
Table created.
SQL& CREATE TABLEtest (test_id NUMBER, tr REF test_ref_typ_new SCOPE IS test_ref);
Table created.
SQL& INSERT INTOtest_ref VALUES (1, 'TEST');
1 row created.
SQL& COMMIT;
Commit complete.
SQL& INSERT INTOtest select 101, REF(a) FROM test_
1 row created.
Commit complete.
SQL& SELECT trFROM
--------------------------------------------------------------------------
AEEEFD47B1A256F7E040E10A4A0B0F89AEEEFD47B1A156F7E040E10A4A0B0F89
SQL& SELECTDEREF(tr) FROM
DEREF(TR)(ID, NAME)
--------------------------------------------------------------------------
TEST_REF_TYP_NEW(1,'TEST')
DUMP ( expr [,return_fmt [, start_position [, length ] ] ] )
返回expr的数据类型编码,字节长度和内部表示。它总是以数据库字符集来返回结果的。return_fmt有以下类型
8表示8进制
10表示10进制
16表示16进制
17表示如果能解析成可打印的字符则返回字符,否则返回16进制码。
默认地,返回值不包含字符集的信息。要显示字符集信息,在上面代码的基础上加上1000。
start_position表示开始位置;length表示要解析的长度。
SQL& SELECTDUMP('abc', 1016) result FROM DUAL;
-------------------------------------------------
Typ=96 Len=3 CharacterSet=ZHT16MSWIN950: 61,62,63
SQL& SELECTDUMP('abc', 17) result FROM DUAL;
-------------------
Typ=96 Len=3: a,b,c
SQL& SELECTDUMP('abc', 8, 2, 1) result FROM DUAL;
-----------------
Typ=96 Len=3: 142
SQL& SELECT DUMP('abc',9,2,1)result FROM DUAL;
----------------
Typ=96 Len=3: 98
SQL& SELECTDUMP('abc',10,2,1) result FROM DUAL;
----------------
Typ=96 Len=3: 98
SQL& SELECTDUMP('abc',16,2,1) result FROM DUAL;
----------------
Typ=96 Len=3: 62
返回自然对数e的n次方。
SQL& SELECTEXP(1) result1, EXP(2) result2 FROM DUAL;
&& RESULT1&&&RESULT2
--------------------
2..3890561
EXTRACT ( { YEAR |MONTH | DAY | HOUR | MINUTE | SECOND | TIMEZONE_HOUR | TIMEZONE_MINUTE |TIMEZONE_REGION | TIMEZONE_ABBR } FROM expr )
返回日期或间隔的特定部分的值。如果是YEAR或MONTH,expr必须是DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL YEAR TO MONTH;如果是DAY,expr必须是DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL DAY TO SECOND;如果是HOUR,MINUTE或SECOND,expr必须是TIMESTAMP,TIMESTAMP
WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL DAY TO SECOND;如果是TIMEZONE_HOUR,TIMEZONE_MINUTE,TIMEZONE_ABBR,TIMEZONE_REGION或TIMEZONE_OFFSET,expr必须是TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。
EXTRACT处理DATE时,使用ANSI DATE,不包含HOUR,MINUTE,SECOND。
SQL& SELECTEXTRACT(YEAR FROM SYSDATE) result FROM DUAL;
&&& RESULT
----------
&&&&& 2011
SQL& SELECTEXTRACT(MONTH FROM& SYSDATE) result FROMDUAL;
&&& RESULT
----------
&&&&&&& 10
SQL& SELECTEXTRACT(DAY FROM SYSDATE) result FROM DUAL;
&&& RESULT
----------
&&&&&&& 11
SQL& SELECTEXTRACT(HOUR FROM SYSTIMESTAMP) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 4
SQL& SELECT EXTRACT(TIMEZONE_HOURFROM SYSTIMESTAMP) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 8
SQL& SELECTEXTRACT(TIMEZONE_OFFSET FROM SYSTIMESTAMP) FROM DUAL;
EXTRACT(TIMEZONE_OFFSETFROMSYSTIMESTAMP)
-----------------------------------------------------------------
+:00:00.
SQL& SELECTEXTRACT(TIMEZONE_MINUTE FROM SYSTIMESTAMP) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 0
SQL& SELECTEXTRACT(YEAR FROM INTERVAL '50' MONTH) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 4
SQL& SELECTEXTRACT(SECOND FROM INTERVAL '12 12:34:56' DAY TO SECOND) result FROM DUAL;
&&& RESULT
----------
&&&&&&& 56
FLOOR ( n )
返回小于或等于n的最大整数。
n可以为任意数值类型或可以隐式转化成数值的其他类型。返回值的类型与参数的数据类型相同。
SQL& SELECTFLOOR(1234.5) result FROM
&&& RESULT
----------
&&&&& 1234
FROM_TZ (timestamp_value, time_zone_value )
将一个TIMESTAMP值和一个时区转化为一个TIMESTAMP WITH TIME ZONE值。
time_zone_value是一个格式为‘TZH:TZM’的字符串或能返回一个TZR的字符串。
SQL& SELECTFROM_TZ(TIMESTAMP ' 12:22:00', '02:00') result FROM DUAL;
---------------------------------------------------------------------------
11-OCT-. PM +02:00
GREATEST ( { expr [,expr ... ] } )
返回一个或多个表达式中的最大值。返回值的类型由第一个expr决定。在比较前,将其余的expr转化成第一个expr的类型再进行比较。默认地,比较是使用nonpadded语义的、二进制的。可以通过NLS_COMP和NLS_SORT参数来改变默认行为。
SQL& SELECTGREATEST('HARRY', 'HARRIOT', 'HAROLD') result FROM DUAL;
GROUPING ( expr )
GROUPING可以将超聚合行从常规分组行中区分出来。GROUP BY的扩展ROLLUP和CUBE会产生超聚合行,使用GROUPING可以将其区分出来。
expr必须是GROUP BY中的表达。如果expr在行中的值为NULL,则返回1,否则返回0。
SQL& SELECT
& 2&DECODE(GROUPING(d.dname), 1, 'ALL DEPARTMENTS', d.dname) department,
& 3&DECODE(GROUPING(e.job), 1, 'ALL JOBS', e.job) job,
& 4&COUNT(*) &TOTAL EMPLOYEES&,
& 5&AVG(sal) * 12 &AVARAGE SALARY&
& 6& FROMscott.emp e, scott.dept d
& 7&WHERE e.deptno=d.deptno
& 8&GROUP BY ROLLUP (d.dname, e.job)
& 9&ORDER BY d.dname, e.
DEPARTMENT&&&&& JOB&&&&&&TOTAL EMPLOYEES AVARAGE SALARY
------------------------ --------------- --------------
ACCOUNTING&&&&& CLERK&&&&&&&&&&&&&&&&&& 1&&&&&&&&& 15600
ACCOUNTING&&&&& MANAGER&&&&&&&&&&&&&&&& 1&&&&&&&&& 29400
ACCOUNTING&&&&& PRESIDENT&&&&&&&&&&&&&& 1&&&&&&&&& 60000
ACCOUNTING&&&&& ALL JOBS&&&&&&&&&&&&&&& 3&&&&&&&&& 35000
RESEARCH&&&&&&& ANALYST&&&&&&&&&&&&&&&& 2&&&&&&&&& 36000
RESEARCH&&&&&&& CLERK&&&&&&&&&&&&&&&&&& 2&&&&&&&&& 11400
RESEARCH&&&&&&& MANAGER&&&&&&&&&&&&&&&& 1&&&&&&&&& 35700
RESEARCH&&&&&&& ALL JOBS&&&&&&&&&&&&&&& 5&&&&&&&&& 26100
SALES&&&&&&&&&& CLERK&&&&&&&&&&&&&&&&&& 1&&&&&&&&& 11400
SALES&&&&&&&&&& MANAGER&&&&&&&&&&&&&&&& 1&&&&&&&&& 34200
SALES&&&&&&&&&& SALESMAN&&&&&&&&&&&&&&& 4&&&&&&&&& 16800
SALES&&&&&&&&&& ALL JOBS&&&&&&&&&&&&&&& 6&&&&&&&&& 18800
ALL DEPARTMENTS ALLJOBS&&&&&&&&&&&&&& 14&&&&
GROUPING_ID ( expr )
返回一行中相关GROUPING字节向量的数值。GROUPING_ID只有在GROUP BY ROLLUP或CUBE中,并且和GROUPING函数一起使用。
SQL& SELECTdeptno, job, SUM(sal) &Total Salary&,
& 2&GROUPING(deptno) gd,
& 3&GROUPING(job) gj,
& 4&GROUPING_ID(deptno, job) gdj,
& 5&GROUPING_ID(job, deptno) gjd
& 6& FROMscott.emp
& 7&GROUP BY CUBE(deptno,job)
& 8&ORDER BY deptno,job,&Total Salary&,
&&& DEPTNO JOB&&&&&& Total Salary& GD& GJGDJ GJD
---------- --------------------- --- --- --- ---
&&&&&&& 10 CLERK&&&&&&&&&&&& 1300&& 0&&0&& 0&& 0
&&&&&&& 10 MANAGER&&&&&&&&&& 2450&& 0&&0&& 0&& 0
&&&&&&& 10 PRESIDENT&&&&&&&& 5000&&0&& 0&& 0&& 0
&&&&&&& 10&&&&&&&&&&&&&&&&&& 8750&& 0&&1&& 1&& 2
&&&&&&& 20 ANALYST&&&&&&&&&& 6000&& 0&&0&& 0&& 0
&&&&&&& 20 CLERK&&&&&&&&&&&& 1900&& 0&&0&& 0&& 0
&&&&&&& 20 MANAGER&&&&&&&&&& 2975&& 0&&0&& 0&& 0
&&&&&&& 20&&&&&&&&&&&&&&&&& 10875&& 0&&1&& 1&& 2
&&&&&&& 30 CLERK&&&&&&&&&&&&& 950&& 0&&0&& 0&& 0
&&&&& &&30 MANAGER&&&&&&&&&& 2850&& 0&&0&& 0&& 0
&&&&&&& 30 SALESMAN&&&&&&&&& 5600&&0&& 0&& 0&& 0
&&&&&&& 30&&&&&&&&&&&&&&&&&& 9400&& 0&&1&& 1&& 2
&&&&&&&&&& ANALYST&&&&&&&&&& 6000&& 1&&0&& 2&& 1
&&&&&&&&&& CLERK&&&&&&&&&&&& 4150&& 1&&0&& 2&& 1
&&&&&&&&&& MANAGER&&&&&&&&&& 8275&& 1&&0&& 2&& 1
&&&&&&&&&& PRESIDENT&&&&&&&& 5000&&1&& 0&& 2&& 1
&&&&&&&&&& SALESMAN&&&&&&&&& 5600&&1&& 0&& 2&& 1
&&&&&&&&&&&&&&&&&&&&&&&&&&& 29025&& 1&&1&& 3&& 3
HEXTORAW ( char )
将包含16进制数字的char转化为RAW值。
char可以是CHAR,VARCHAR2,NCHAR或NVARCHAR2。不直接支持CLOB,但传进来的CLOB会先进行隐式转化。
SQL& SELECTUTL_RAW.CAST_TO_VARCHAR2(HEXTORAW('4F')) result
& 2& FROMDUAL;
---------------------------------------------------------------------
INITCAP ( char )
将char转化成每个单词首字母大写,其他字母小写的形式。单词是由空格或其他非字母数字字符来间隔。
char可以为CHAR,VARCHAR2,NCHAR或NVARCHAR2,返回值类型与char相同。
SQL& SELECTINITCAP('ORACLE DATABASE') reslt FROM DUAL;
---------------
Oracle Database
SQL& SELECT INITCAP('Oracledatabase') reslt FROM DUAL;
---------------
Oracle Database
INSTR ( string,substring [, position [, occurrence ] ] )
在string中,从position开始搜索substring,返回第occurrence次匹配的位置。如果没找到,返回0。position和occurrence的默认值是1。当position为负数时,表示从string的后面开始向前搜索。
SQL& SELECTINSTR('', '0') result FROM DUAL;
&&& RESULT
----------
&&&&&&& 10
SQL& SELECTINSTR('', '0', 11) result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&& 20
SQL& SELECT INSTR('','0', 2, 2) result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&& 20
SQL& SELECTINSTR('', '0', 11, 2) result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&&& 0
SQL& SELECTINSTR('', '0', -1) result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&& 20
SQL& SELECTINSTR('', '0', -1, 2) result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&& 10
LAST_DAY ( date )
返回date所在月份的最后一天。
SQL& SELECT LAST_DAY(SYSDATE)result FROM DUAL;
------------
LEAST ( { expr [,expr ... ] } )
返回一个或多个表达式中的最小值。返回值的类型由第一个expr决定。在比较前,将其余的expr转化成第一个expr的类型再进行比较。默认地,比较是使用nonpadded语义的、二进制的。可以通过NLS_COMP和NLS_SORT参数来改变默认行为。
SQL& SELECT LEAST('HARRY','HARRIOT', 'HAROLD') result FROM DUAL;
LENGTH ( char )
返回字符串char的长度。
SQL& SELECTLENGTH('ORACLE') result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 6
返回n的自然对数。
n必须大于0。
SQL& SELECTLN(10) result FROM DUAL;
&&& RESULT
----------
SQL& SELECT LN(0)result FROM DUAL;
SELECT LN(0) resultFROM DUAL
&&&&&&&&& *
ERROR at line 1:
ORA-01428: argument'0' is out of range
LOCALTIMESTAMP ( timestamp_pecision)
以会话时区返回当前日期时间。它与CURRENT_TIMESTAMP的区别是,LOCALTIMESTAMP返回类型为TIMESTAMP,CURRENT_TIEMSTAMP返回类型为TIMESTAMP WITH TIME ZONE。
timestamp_pecision指定小数秒,默认为6。
SQL& SELECTLOCALTIMESTAMP FROM DUAL;
LOCALTIMESTAMP
-------------------------------------------------------
12-OCT-.969074 PM
SQL& SELECTLOCALTIMESTAMP(0) FROM DUAL;
LOCALTIMESTAMP(0)
-------------------------------------------------------
12-OCT-11 02.38.03PM
SQL& SELECTLOCALTIMESTAMP(9) FROM DUAL;
LOCALTIMESTAMP(9)
-------------------------------------------------------
12-OCT-. PM
SQL& SELECTLOCALTIMESTAMP(10) FROM DUAL;
SELECTLOCALTIMESTAMP(10) FROM DUAL
&&&&&&&&&&&&&&&&&&&&& *
ERROR at line 1:
ORA-30088: datetime/intervalprecision is out of range
LOG ( n1, n2 )
返回以n1为底的n2的对数。
底n1为任意正数,除了0和1。n2可以为任意正数。
SQL& SELECTLOG(10,100) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 2
LOWER ( char )
返回字符串的小写形式。
SQL& SELECT LOWER('ORACLE')result FROM DUAL;
LPAD ( expr1, n [,expr2 ] )
返回长度为n的expr1字符串。如果expr1的长度小于n,则用expr2左填充expr1到长度n为止;expr2默认为一个空格符。如果expr1的长度大于n,截取expr1前n个字符返回。
SQL& SELECTLPAD('ORACLE',10) result FROM DUAL;
----------
&&& ORACLE
SQL& SELECTLPAD('ORACLE',10,'-') result FROM DUAL;
----------
----ORACLE
SQL& SELECTLPAD('ORACLE',4) result FROM DUAL;
LTRIM ( char [, set] )
删除char从左边开始的包含在set中的字符,直到遇到第一个不再set中的字符。set默认是空格符。
SQL& SELECTLTRIM('&===&ORACLE&===&', '&&=') result FROM DUAL;
-----------
ORACLE&===&
SQL& SELECTLTRIM('&& ORACLE&& ') result FROM DUAL;
MAX ( expr )
聚合函数,返回所有行中expr的最大值。
SQL& SELECTMAX(sal) FROM scott.
& MAX(SAL)
----------
&&&&& 5000
MEDIAN ( expr )
聚合函数,返回所有行中expr的中位数。
expr只能是数值类型或日期时间类型。
SQL& SELECTMEDIAN(sal) FROM scott.
MEDIAN(SAL)
-----------
&&&&&& 1550
SQL& SELECTMEDIAN(ename) FROM scott.
SELECT MEDIAN(ename)FROM scott.emp
&&&&&&&&&&&&& *
ERROR at line 1:
ORA-30495: Theargument should be of numeric or date/datetime type.
MIN ( expr )
聚合函数,返回所有行中expr的最小值。
SQL& SELECT MIN(sal)FROM scott.
& MIN(SAL)
----------
&&&&&& 800
MOD ( n2, n1 )
返回n2除以n1后的余数。如果n1为0,则返回n2。
注意:MOD的计算方式不用于数学上的经典模式n2 - n1 *FLOOR(n2/n1)。网上找到的MOD的计算方式为:DECODE(SIGN(n2), -1,'-') || MOD(ABS(n2), ABS(n1)),余数的符号由被除数n2决定。另外,Oracle另一个关于余数的函数REMAINDER的计算方式为n2 - n1 * ROUND(n2/n1)。所以要注意使用。
SQL& SELECTMOD(11,4), MOD(11,-4),
& 2&MOD(-11,4),MOD(-11,-4) FROM DUAL;
&MOD(11,4) MOD(11,-4) MOD(-11,4) MOD(-11,-4)
-------------------- ---------- -----------
&&&&&&&& 3&&&&&&&&& 3&&&&&&&& -3&&&&&&&&& -3
MONTHS_BETWEEN ( date1,date2 )
返回date1和date2之间的月份数。如果date1比date2晚,结果为正数;如果date1比date2早,结果为负数。如果date1和date2是该月中的相同日期,或者是该月中的最后一天,那么结果是整数,否则结果具有小数部分。
SQL& SELECTMONTHS_BETWEEN(
& 2&TO_DATE('','YYYYMMDD'),
& 3&TO_DATE('','YYYYMMDD')) result FROM DUAL;
&&& RESULT
----------
&-.4516129
SQL& SELECTMONTHS_BETWEEN(
& 2&TO_DATE('','YYYYMMDD'),
& 3&TO_DATE('','YYYYMMDD')) result FROM DUAL;
&&& RESULT
----------
&&&&&&& -1
SQL& SELECTMONTHS_BETWEEN(
& 2&TO_DATE('','YYYYMMDD'),
& 3&TO_DATE('','YYYYMMDD')) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 1
NANVL ( n2, n1 )
该函数只对BINARY_FLOAT和BINARY_DOUBLE起作用。如果n2为NaN(不是数值),返回n1;否则返回n2。
CREATE TABLEfloat_point_demo
& (dec_num NUMBER(10,2), bin_doubleBINARY_DOUBLE, bin_float BINARY_FLOAT);
INSERT INTOfloat_point_demo
& VALUES (0,'NaN','NaN');
SQL& SELECT *
& 2&&&FROM float_point_
&& DEC_NUM BIN_DOUBLE& BIN_FLOAT
-------------------- ----------
&&&&&&&& 0&&&&&&&Nan&&&&&&& Nan
SQL& SELECTbin_float, NANVL(bin_float,0)
& 2& FROMfloat_point_
&BIN_FLOAT NANVL(BIN_FLOAT,0)
----------------------------
&&&&&& Nan&&&&&&&&&&&&&&&&& 0
NEXT_DAY ( date,char )
返回date之后的第一个由char表示的星期几。返回值类型是DATE。
SQL& SELECTNEXT_DAY(SYSDATE, 'SUNDAY') result FROM DUAL;
------------
NULLIF ( expr1,expr2 )
比较expr1和expr2,如果相等,返回NULL,否则返回expr1。expr1不能是NULL的字面量。
SQL& SELECTNULLIF(1, 4/2) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 1
SQL& SELECTNVL(NULLIF('ORACLE', 'ORA' || 'CLE'), 'They are the same.') result
& 2& FROMDUAL;
------------------
They are the same.
SQL& SELECTNULLIF(NULL, 'ORACLE') result FROM DUAL;
SELECT NULLIF(NULL,'ORACLE') result FROM DUAL
&&&&&&&&&&&&& *
ERROR at line 1:
ORA-00932:inconsistent datatypes: expected - got CHAR
SQL& SELECTNULLIF(NULL, 100) result FROM DUAL;
SELECT NULLIF(NULL,100) result FROM DUAL
&&&&&&&&&&&&& *
ERROR at line 1:
ORA-00932:inconsistent datatypes: expected - got CHAR
NUMTODSINTERVAL ( n,'interval_unit' )
将数值n转化为INTERVAL DAY TO SECOND类型。
interval_unit必须为DAY,HOUR,MINUTE或SECOND。
SQL& SELECTNUMTODSINTERVAL(100, 'DAY') result FROM DUAL;
--------------------------------------------------------------------
+:00:00.
SQL& SELECTNUMTODSINTERVAL(123.45, 'hour') result FROM DUAL;
--------------------------------------------------------------------
+:27:00.
SQL& SELECTNUMTODSINTERVAL(, 'minute') result FROM DUAL;
--------------------------------------------------------------------
+:45:40.
SQL& SELECTNUMTODSINTERVAL(, 'SECOND') result FROM DUAL;
--------------------------------------------------------------------
+:25:45.
NUMTOYMINTERVAL ( n,'interval_unit' )
将数值n转化为INTERVAL YEAR TO MONTH类型。
interval_unit必须为YEAR或MONTH。
SQL& SELECTNUMTOYMINTERVAL(, 'YEAR') result FROM DUAL;
------------------------------------------------------------------
SQL& SELECTNUMTOYMINTERVAL(, 'MONTH') result FROM DUAL;
------------------------------------------------------------------
NVL ( expr1, expr2 )
如果expr1为NULL,返回expr2,否则返回expr1。
如果expr1和expr2的数据类型不同时,Oracle将进行隐式转化。如果不能转化,Oracle会返回一个错误。
SQL& SELECTNVL(NULL, 'IS NULL') result FROM DUAL;
SQL& SELECTNVL(123, 'ORACLE') result FROM DUAL;
SELECT NVL(123,'ORACLE') result FROM DUAL
&&&&&&&&&&&&&&& *
ERROR at line 1:
ORA-01722: invalidnumber
NVL2 ( expr1, expr2,expr3 )
如果expr1不为null,则返回expr2,否则返回expr3。
expr1可以为任意数据类型;而expr2和expr3,除了LONG,可以为任意数据类型。如果expr2和expr3的数据类型不同,Oracle则会隐式地将其中一种专为另一种数据类型。如果它们不能转化,会报错。如select nvl2(null, 123, 'abc')会报错ORA-01722 invalid number,因为abc不能转化为数值。如果expr2是字符或数值类型,则根据以下规则进行隐式转化:1. 如果expr2是字符类型,Oracle将expr3转化成expr2的数据类型,除非expr3是null。
2. 如果expr2是数值类型,Oracle会根据数值优先级来进行转化。其他情况根据隐式类型转化表进行转化。
注:数值优先级: BINARY_DOUBLE & BINARY_FLOAT & NUMBER
SELECT NVL2(NULL,'NOT NULL', 'NULL') result FROM
POWER ( n2, n1 )
返回n2的n1次方。n2和n1可以是任意数值,但当n2为负数时,n1必须是整数。
SQL& SELECTPOWER(2, 32) result FROM DUAL;
&&& RESULT
----------
SQL& SELECTPOWER(10, 2.5) result FROM DUAL;
&&& RESULT
----------
316.227766
SQL& SELECTPOWER(-10, -2) result FROM DUAL;
&&& RESULT
----------
&&&&&& .01
SQL& SELECT POWER(-10,3.3) result FROM DUAL;
SELECT POWER(-10,3.3) result FROM DUAL
&&&&&&&&&&&& *
ERROR at line 1:
ORA-01428: argument'-10' is out of range
RAWTOHEX ( raw )
将raw转化成16进制表示的字符串。
SQL& SELECTRAWTOHEX(HEXTORAW('3D3E3F')) result FROM DUAL;
REGEXP_COUNT (source_char, pattern [, position [, match_param]] )
以正则表达式搜索并返回模式pattern在source_char中出现的次数。
pattern最多可以有512字节,如果其数据类型与source_char不同,Oracle会将pattern转化为source_char的数据类型。REGEXP_COUNT会忽略pattern中的子表达式的括号,如pattern'(123(45))'等于'12345'。position表示从source_char的第几位开始搜索,默认为1。match_param可以改变匹配行为,如i表示不区分大小写;c表示区分大小写;n表示'.'可以匹配换行符;m可以将source_char作为多行处理;x表示忽略空格符。如果指定了矛盾的两个值,如'ic',Oracle会取后一个值。如果指定其他不在此范围的值,Oracle会报错。如果忽略match_param,默认的大小写模式由NLS_SORT参数决定;'.'不能匹配换行符;source_char是单行模式。
SQL& SELECTREGEXP_COUNT('ORACLE DATABASE', '[AEIOU]') result FROM DUAL
&&& RESULT
----------
&&&&&&&& 7
SQL& SELECTREGEXP_COUNT('ORACLE DATABASE', '[aeiou]', 1, 'ic') result
& 2& FROMDUAL;
&&& RESULT
----------
&&&&&&&& 0
SQL& SELECTREGEXP_COUNT('ORACLE DATABASE', '[aeiou]', 1, 'icu') result
& 2& FROMDUAL;
SELECTREGEXP_COUNT('ORACLE DATABASE', '[aeiou]', 1, 'icu') result
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *
ERROR at line 1:
ORA-01760: illegalargument for function
REGEXP_INSTR (source_char, pattern [, position [, occurrence [, return_opt [, match_param [,subexpr ] ] ] ] ] )
以正则表达式搜索,返回匹配pattern的位置,可能是匹配子字符串的开始或结束位置,由参数return_option决定。如果没有匹配,返回0。
相同的参数可以参考REGEXP_COUNT。occurrence表示搜索匹配的第几次,如果大于1,则从第一次匹配后的第一字符开始搜索第二次匹配。这个行为与INSTR不同,INSTR是从第一次匹配的第二个字符开始搜索第二次匹配。return_option默认为0,表示返回匹配的第一个字符的位置,即匹配的开头;如果为1,则返回匹配之后的位置,即匹配的结尾。subexpr的范围是从0到9,表示匹配的子模式,如'0123(((abc)(de)f)ghi)45(678)'中,有5个子模式,&abcdefghi&,&abcdef&,&abc&,&de&,&678&。如果subexpr为0,则返回匹配整个模式的位置,如果大于0,则返回匹配整个模式中相应的子模式的位置。如果subexpr为NULL,则返回NULL。默认值为0。
SQL& SELECTREGEXP_INSTR('BOBOB','BOB',1,2) FROM DUAL;
REGEXP_INSTR('BOBOB','BOB',1,2)
-------------------------------
&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 0
SQL& SELECTINSTR('BOBOB','BOB',1,2) FROM DUAL;
INSTR('BOBOB','BOB',1,2)
------------------------
&&&&&&&&&&&&&&&&&&&&&& 3
SQL& SELECTREGEXP_INSTR('','123',1,1,0) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 2
SQL& SELECTREGEXP_INSTR('','123',1,1,1) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 5
SQL& SELECTREGEXP_INSTR('','[[:digit:]]+(678)',1,1,0,'i',1)
REGEXP_INSTR('','[[:DIGIT:]]+(678)',1,1,0,'I',1)
----------------------------------------------------------
& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&7
REGEXP_LIKE (source_char, pattern [, match_param] )
以正则表达式搜索模式pattern,找到则返回true,否则返回false。
参考REGEXP_COUNT和REGEXP_INSTR。
SQL& SELECT'FOUND' result FROM DUAL
& 2&WHERE REGEXP_LIKE('','[[:digit:]]+(678)');
REGEXP_REPLACE (source_char, pattern [, replace_string [, position [, occurrence [, match_param] ] ] ] )
以正则表达式搜索并替换pattern为replace_string。
replace_string可以包含子模式的引用\n,n从1到9。如果没有提供replace_string,则删除source_char中匹配到的pattern。其他参数参考REGEXP_COUNT和REGEXP_INSTR。
SQL& SELECTREGEXP_REPLACE('','678') result FROM DUAL;
SQL& SELECTREGEXP_REPLACE('999-888-1234', '([[:digit:]]{3})-([[:digit:]]{3})-([[:digit:]]{4})',
& 2&'(\3)\1 \2') result FROM DUAL;
-------------
REGEXP_SUBSTR (source_char, pattern [, position [, occurrence [, match_param [, subexpr ] ] ]] )
以正则表达式搜索并截取字符串,匹配原理与REGEXP_INSTR相似。
参数REGEXP_INSTR。
SQL& SELECTREGEXP_SUBSTR('/database',
& 2&'http://(([[:alnum:]]+\.?){3,4})/?', 1,1,'i',1) result FROM DUAL;
--------------
REMAINDER ( n2, n1 )
返回n2除以n1后的余数,计算原理可以参考MOD。
如果n1=0或者n2=无线,那么当参数是NUMBER时,Oracle返回一个错误,当参数是BINARY_FLOAT或BINARY_DOUBLE时,返回NaN。
SQL& SELECTREMAINDER(11,4),REMAINDER(11,-4),
& 2&REMAINDER(-11,4),REMAINDER(-11,-4) FROM DUAL;
REMAINDER(11,4) REMAINDER(11,-4)REMAINDER(-11,4) REMAINDER(-11,-4)
------------------------------- ---------------- -----------------
&&&&&&&&&&&& -1&&&&&&&&&&&&&& -1&&&&&&&&&&&&&&& 1&&&&&&&&&&&&&&&& 1
REPLACE ( char,search_string [, replacement_string ] )
将char中的所有search_string替换成replacement_string。如果忽略replacement_string或为NULL,那将删除char中的所有search_string。
SQL& SELECTREPLACE('HELLO ORACLE', 'O', '0') result FROM DUAL;
------------
HELL0 0RACLE
ROUND ( date [, fmt] )
返回关于格式fmt的完整日期。fmt默认为DAY。
SQL& SELECTROUND(TO_DATE('11','YYYYMMDDHH24MISS'))
& 2&result FROM DUAL;
------------
SQL& SELECTROUND(TO_DATE('11','YYYYMMDDHH24MISS'), 'MONTH')
& 2&result FROM DUAL;
------------
SQL& SELECTROUND(TO_DATE('11','YYYYMMDDHH24MISS'), 'yyyy')
& 2&result FROM DUAL;
------------
SQL& SELECTROUND(TO_DATE('11','YYYYMMDDHH24MISS'), 'yyyy')
& 2&result FROM DUAL;
------------
SQL& SELECTROUND(TO_DATE('11','YYYYMMDDHH24MISS'), 'yyyy')
& 2&result FROM DUAL;
------------
ROUND ( n [, integer] )
返回四舍五入后的n。计算原理是如果n为0,总是返回0;如果n为正数,则返回FLOOR(n * POWER(10, integer) + 0.5) *POWER(10, -integer);如果n为负数,则返回-ROUND(-n, integer)。
n的默认值为0,当n大于0时,表示小数点右边进行四舍五入;当n小于0时,表示小数点左边进行四舍五入。
SQL& SELECTROUND(0, -1) result FROM DUAL;
&&& RESULT
----------
&&&&&&&& 0
SQL& SELECTROUND(, 2) result FROM DUAL;
&&& RESULT
----------
&& 1234.57
SQL& SELECTROUND(, -2) reulst FROM DUAL;
&&& REULST
----------
&&&&& 9900
ROWIDTOCHAR ( rowid)
将rowid转化为VARCHAR2数据类型,长度为18字符。
SQL& SELECTROWIDTOCHAR(rowid),deptno FROM SCOTT.DEPT;
ROWIDTOCHAR(ROWID)&&&& DEPTNO
----------------------------
AAASHhAAEAAAACHAAA&&&&&&&& 10
AAASHhAAEAAAACHAAB&&&&&&&& 20
AAASHhAAEAAAACHAAC&&&&&&&& 30
AAASHhAAEAAAACHAAD&&&&&&&& 40
RPAD ( expr1, n [,expr2 ] )
返回长度为n的expr1字符串。如果expr1的长度小于n,则用expr2右填充expr1到长度n为止;expr2默认为一个空格符。如果expr1的长度大于n,截取expr1前n个字符返回。
SQL& SELECTRPAD('ORACLE',10) result FROM DUAL;
----------
SQL& SELECTRPAD('ORACLE',10,'-') result FROM DUAL;
----------
ORACLE----
SQL& SELECTRPAD('ORACLE',4) result FROM DUAL;
RTRIM ( char [, set] )
删除char从右边开始的包含在set中的字符,直到遇到第一个不再set中的字符。set默认是空格符。
SQL& SELECTRTRIM('&===&ORACLE&===&', '&&=') result FROM DUAL;
-----------
&===&ORACLE
SQL& SELECTRTRIM('&& ORACLE&& ') result FROM DUAL;
SESSIONTIMEZONE
返回当前会话的时区。
SQL& SELECTSESSIONTIMEZONE FROM DUAL;
SESSIONTIMEZONE
--------------------------------------
+08:00
SIGN ( n )
返回n的符号。对于NUMBER,当n&0时,返回-1;当n=0时,返回0;当n&0时,返回1。对于BINARY_FLOAT或BINARY_DOUBLE,但n&0时,返回-1;当n&=0或n=NaN时,返回1。
SQL& SELECTSIGN(-10), SIGN(0), SIGN(10) FROM DUAL;
&SIGN(-10)&&&SIGN(0)&& SIGN(10)
-------------------- ----------
&&&&&&& -1&&&&&&&&& 0&&&&&&&&& 1
返回n的正弦值。
SQL& SELECTSIN(30 * 3./180) result FROM DUAL;
&&& RESULT
----------
&&&&&&& .5
SOUNDEX ( char )
返回char的语音表示字符。规则是保留第一个字符,删除剩余的aehiouwy中的字符;映射bfpv=1,cgjkqsxz=2,dt=3,l=4,mn=5,r=6;相邻的语音字符相同,则删除重复的一个;最后返回4位语音字符,不足4位,用0右填充。
SQL& SELECTSOUNDEX('ORACLE') result FROM DUAL;
SQL& SELECTSOUNDEX('Bad') result FROM DUAL;
SQRT ( n )
返回n的平方根。如果n为NUMBER,那么n不能为负数。如果n为BINARY_FLOAT或BINARY_DOUBLE,那么n&=0,返回正数;n=-0,返回-0;n&0,返回NaN。
SQL& SELECTSQRT(100) FROM DUAL;
&SQRT(100)
----------
&&&&&&& 10
SQL& SELECTSQRT(-100) FROM DUAL;
SELECT SQRT(-100)FROM DUAL
&&&&&&&&&&& *
ERROR at line 1:
ORA-01428: argument'-100' is out of range
STDDEV ( [ DISTINCT| ALL ] expr )
返回expr的标准差。
SQL& SELECTSTDDEV(sal) FROM scott.
STDDEV(SAL)
-----------
SUBSTR ( char,position [, substring_length ] )
从char中position开始截取长度为substring_length的字符串。如果position为0,则改成1;如果position为正数,则从char的左边开始数;如果position为负数,则从char的右边开始数。如果substring_length忽略,则截取到char的最后。
SQL& SELECTSUBSTR('ORACLE',4,5) result FROM DUAL;
SQL& SELECTSUBSTR('ORACLE',-4,2) result FROM DUAL;
SUM ( [ DISTINCT |ALL ] expr )
计算expr的总和。
SQL& SELECTSUM(sal) result FROM scott.
&&& RESULT
----------
&&&& 29025
SYS_CONNECT_BY_PATH( column, char )
只在分级查询中有效,返回column从根到节点的路径,以char分隔。
SQL& SELECTLPAD(' ',2*LEVEL-1)||SYS_CONNECT_BY_PATH(ename,'/') path
& 2& FROMscott.emp START WITH ename='JONES'
& 3&CONNECT BY PRIOR empno=
--------------------------------------------------------------------
&& /JONES/SCOTT
&&&& /JONES/SCOTT/ADAMS
&& /JONES/FORD
&&&& /JONES/FORD/SMITH
SYS_CONTEXT ('namespace', 'parameter' [, length ] )
返回当前上下文的namespace中,parameter的值。Oracle提供了一个内置的namespace是USERENV。
length默认为256,可选范围是1至4000字节。如果不在此范围,Oracle会忽略它并使用默认值。
SQL& SELECTSYS_CONTEXT('USERENV', 'SESSION_USER') result FROM DUAL;
--------------------------------------------------------------------
SQL& SELECTSYS_CONTEXT('USERENV', 'SESSION_USER', 2) result
& 2& FROMDUAL;
--------------------------------------------------------------------
SYS_EXTRACT_UTC (datetime_with_timezone )
返回datetime_with_timezone的协调世界时。
SQL& SELECTSYS_EXTRACT_UTC(SYSTIMESTAMP) FROM DUAL;
SYS_EXTRACT_UTC(SYSTIMESTAMP)
-----------------------------------------------------
14-OCT-.754413 AM
SYS_GUID ()
返回一个GUID。
SQL& SELECTSYS_GUID FROM DUAL;
SELECT SYS_GUID FROMDUAL
ERROR at line 1:
ORA-00904:&SYS_GUID&: invalid identifier
SQL& SELECTSYS_GUID() FROM DUAL;
SYS_GUID()
--------------------------------
AF3FF8E040E10A4A0B31DF
返回数据库系统的当前日期时间。
SQL& SELECTSYSDATE FROM DUAL;
------------
SYSTIMESTAMP
返回数据库系统的当前日期时间,包括小数秒和时区信息。
SQL& SELECTSYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
-----------------------------------
14-OCT-.557445 PM +08:00
返回n的正切值。
SQL& SELECTTAN(135 * 3./180) result FROM DUAL;
&&& RESULT
----------
&&&&&&& -1
TIMESTAMP_TO_SCN (timestamp )
根据timestamp返回一个最接近的SCN。
SQL& SELECTTIMESTAMP_TO_SCN(SYSTIMESTAMP) result FROM DUAL;
&&& RESULT
----------
TO_BINARY_DOUBLE (expr [, fmt [, 'nlsparam' ] ] )
返回一个双精度浮点数。从字符串转化成BINARY_DOUBLE是不精确的;从BINARY_FLOAT转化成BINARY_DOUBLE是精确的。
expr可以是字符串或数值型,如NUMBER,BINARY_FLOAT,BINARY_DOUBLE。如果expr是BINARY_DOUBLE,返回expr。只有expr是字符串时,fmt和nlsparam才可用。'INF'(不分大小写)转化成正无限;'-INF'(不分大小写)转化成负无限;'NaN'转化成NaN(不是数值)。在expr中不能使用浮点数格式化元素(F,f,D,d)。
SQL& SELECTTO_BINARY_DOUBLE('INF') FROM DUAL;
TO_BINARY_DOUBLE('INF')
-----------------------
&&&&&&&&&&&&&&&&&&& Inf
SQL& SELECTTO_BINARY_DOUBLE('-inf') FROM DUAL;
TO_BINARY_DOUBLE('-INF')
------------------------
&&&&&&&&&&&&&&&&&&& -Inf
SQL& SELECTTO_BINARY_DOUBLE('nan') FROM DUAL;
TO_BINARY_DOUBLE('NAN')
-----------------------
&&&&&&&&&&&&&&&&&&& Nan
SQL& SELECTTO_BINARY_DOUBLE(123.4567) FROM DUAL;
TO_BINARY_DOUBLE(123.4567)
--------------------------
&&&&&&&&&&&&&&& 1.235E+002
SQL& SELECTTO_BINARY_DOUBLE('123,456.78','999,999.99') FROM DUAL;
TO_BINARY_DOUBLE('123,456.78','999,999.99')
-------------------------------------------
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1.235E+005
TO_BINARY_FLOAT (expr [, fmt [, 'nlsparam' ] ] )
返回一个单精度浮点数。从字符串转化成BINARY_FLOAT是不精确的;如果BINARY_DOUBLE的精度超过BINARY_FLOAT,则从BINARY_DOUBLE转化成BINARY_FLOAT是不精确的。
expr可以是字符串或数值型,如NUMBER,BINARY_FLOAT,BINARY_DOUBLE。如果expr是BINARY_FLOAT,返回expr。只有expr是字符串时,fmt和nlsparam才可用。'INF'(不分大小写)转化成正无限;'-INF'(不分大小写)转化成负无限;'NaN'转化成NaN(不是数值)。在expr中不能使用浮点数格式化元素(F,f,D,d)。
SQL& SELECTTO_BINARY_FLOAT('INF') FROM DUAL;
TO_BINARY_FLOAT('INF')
----------------------
&&&&&&&&&&&&&&&&&& Inf
SQL& SELECTTO_BINARY_FLOAT('-inf') FROM DUAL;
TO_BINARY_FLOAT('-INF')
-----------------------
&&&&&&&&&&& &&&&&&&-Inf
SQL& SELECTTO_BINARY_FLOAT('nan') FROM DUAL;
TO_BINARY_FLOAT('NAN')
----------------------
&&&&&&&&&&&&&&&&&& Nan
SQL& SELECTTO_BINARY_FLOAT(123.4567) FROM DUAL;
TO_BINARY_FLOAT(123.4567)
-------------------------
&&&&&&&&&&&&&& 1.235E+002
SQL& SELECTTO_BINARY_FLOAT('123,456.78','999,999.99') FROM DUAL;
TO_BINARY_FLOAT('123,456.78','999,999.99')
------------------------------------------
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 1.235E+005
TO_BLOB ( raw_value )
将LONG RAW和RAW转化成BLOB。
SQL& CREATE TABLEraw_table (raw_column RAW(2000));
Table created.
SQL& INSERT INTOraw_table VALUES (HEXTORAW('ABCDEF'));
1 row created.
SQL& COMMIT;
Commit complete.
SQL& SELECTTO_BLOB(raw_column) blob FROM raw_
-----------------------------------------------------------------
TO_CHAR ( { nchar |clob | nclob } )
将NCHAR,NVARCHAR2,CLOB或NCLOB转化成数据库字符集,返回值总是VARCHAR2类型。当LOB的长度超过VARCHAR2的最大长度时,Oracle会返回一个错误。
SQL& SELECTTO_CHAR('ORACLE DATABASE') result FROM DUAL;
---------------
ORACLE DATABASE
TO_CHAR ( { datetime| interval } [, fmt [, 'nlsparam' ] ] )
将DATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE,INTERVAL DAY TO SECOND,INTERVAL YEAR TO MONTH转化成格式为fmt的VARCHAR2类型。如果忽略fmt,将以下面的规则进行处理:DATE转化成默认的日期格式;TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE转化成默认的时间戳格式;TIMESTAMP WITH TIME ZONE转化成默认的时间戳加时区的格式;INTERVAL值转化成数字代表的格式。
nlsparam可以指定会话的语言,如NLS_DATE_LANGUAGE=language。
SQL& SELECTTO_CHAR(SYSDATE) result FROM DUAL;
------------
SQL& SELECTTO_CHAR(SYSTIMESTAMP) result FROM DUAL;
---------------------------------------------------
17-OCT-.729122 AM +08:00
TO_CHAR ( n [, fmt[, 'nlsparam' ] ] )
将数值n转化成格式是fmt的VARCHAR2。如果n是负数,负号会放在格式化的字符串之前,如TO_CHAR(-1, '$9')返回-$1,而不是$-1。
nlsparam可以指定小数点、千分位、货币符号(Local和International)。如NLS_NUMERIC_CHARACTERS='dg',NLS_CURRENCY='text',NLS_ISO_CURRENCY=territory。
SQL& SELECTTO_CHAR(-1D99') result FROM DUAL;
----------
-10,000.00
SQL& SELECTTO_CHAR(-10000,'L99G999D99') result FROM DUAL;
--------------------
&&&&&&&& -$10,000.00
SQL& SELECT TO_CHAR(-10000,'L99G999D99MI')result FROM DUAL;
--------------------
&&&&&&&& $10,000.00-
SQL& SELECTTO_CHAR(-10000,'L99G999D99MI',
& 2&'NLS_NUMERIC_CHARACTERS='',.'' NLS_CURRENCY=''AusDollars'' ') result
& 3&&FROM DUAL;
--------------------
AusDollars10.000,00-
TO_CLOB ( {lob_column | char } )
将LOB字段中或字符串中的NCLOB值转化为CLOB值。
SQL& SELECTTO_CLOB('ORACLE DATABASE') result FROM DUAL;
--------------------------------------------------------
ORACLE DATABASE
TO_DATE ( char [,fmt [, 'nlsparam' ] ] )
将字符串char转化成DATE。
fmt指定了char的时间格式。如果忽略fmt,就使用默认的时间格式。默认的时间格式有NLS_TERRITORY隐式决定,或由NLS_DATE_FORMAT显示决定。如果fmt是J,代码是Julian,那么char必须是整数。nlsparam可以指定字符串的语言,如NLS_DATE_LANGUAGE=language。
SQL& SELECTTO_DATE(':59:59', 'YYYYMMDD HH24:MI:SS') result
& 2& FROMDUAL;
------------
TO_DSINTERVAL ( '{[+|-] days hours : minutes : seconds [, frac_secs ] | [-] P [ days D ] [ T [hours H ] [ minutes M ] [ seconds [, frac_secs ] S ] }'
将字符串转化成INTERVAL DAY TO SECOND。TO_DSINTERVAL可以接受两种类型的格式,SQL标准和ISO标准。对于SQL标准,days范围是0~;hours范围是0~23;minutes和seconds是0~59;frac_secs是.0~.。对于ISO标准,days、hours、minutes和seconds的范围是0~;frac_secs是.0~.;格式中不能有空格符;如果指定了T,必须至少指定hours、minutes或seonds中的一个。
SQL& SELECTSYSDATE + TO_DSINTERVAL('100') result FROM DUAL;
SELECT SYSDATE +TO_DSINTERVAL('100') result FROM DUAL
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& *
ERROR at line 1:
ORA-01867: theinterval is invalid
SQL& SELECTSYSDATE + TO_DSINTERVAL('100 00: 00:&&00') result FROM DUAL;
------------
SQL& SELECTSYSDATE + TO_DSINTERVAL('P100DT50H') result FROM DUAL;
------------
TO_MULTI_BYTE ( char)
将char中的单字节转化为对应的多字节字符。
SQL& SELECTTO_MULTI_BYTE('ORACLE') result FROM DUAL;
------------
ORACLE
TO_NUMBER ( expr [,fmt [, 'nlsparam' ] ] )
将expr转化成NUMBER类型。
参考TO_CHAR(number)。
SQL& SELECT TO_NUMBER('-RMB1,000','L9G999D99',
& 2&'NLS_NUMERIC_CHARACTERS=''.,'' NLS_CURRENCY=''RMB''') result
& 3& FROMDUAL;
&&& RESULT
----------
&&&& -1000
TO_SINGLE_BYTE (char )
将char中多字节字符转成相应的单字节字符。
SQL& SELECT TO_SINGLE_BYTE(TO_MULTI_BYTE('ORACLE'))result
& 2& FROMDUAL;
TO_TIMESTAMP ( char[, fmt [, 'nlsparam' ] ] )
将字符串char转换成TIMESTAMP数据类型。
参考TO_CHAR(DATE)函数。
SQL& SELECTTO_TIMESTAMP(':34:56.7890',
& 2&'YYYYMMDD HH24:MI:SS.FF') result FROM DUAL;
---------------------------------------------------
01-JAN-. PM
TO_TIMESTAMP_TZ (char [, fmt [, 'nlsparam' ] ] )
将字符串char转化成TIMESTAMP WITH TIME ZONE类型。
参考TO_CHAR(DATE)函数。
SQL& SELECTTO_TIMESTAMP_TZ(':34:56.7890 +08:00',
& 2&'YYYYMMDD HH24:MI:SS.FF TZH:TZM') result FROM DUAL;
------------------------------------------------------------
01-JAN-11 12.34.56.PM +08:00
TO_YMINTERVAL ( '{[+|-] years - months | [-]P [ years Y ] [ months M ] }' )
将字符串转化成INTERVAL YEAR TO MONTH。参数有两种,一种是SQL标准,另一种是ISO标准。ISO标准需要可以指定days、hours、minutes和seconds,但不起作用。
SQL& SELECT SYSDATE+TO_YMINTERVAL('1-1')result FROM DUAL;
------------
SQL& SELECTSYSDATE+TO_YMINTERVAL('P1Y1M1D') result FROM DUAL;
------------
SQL& SELECTSYSDATE+TO_YMINTERVAL('P1Y1M20D') result FROM DUAL;
------------
TRANSLATE ( expr,from_string, to_string )
将expr中from_string中的字符替换成to_string中的相应字符。当from_string包含的字符多于to_string,没有对应的字符就删除其在expr中的字符。如果一个字符在from_string中出现多次,只替换成第一个相应的字符。
SQL& SELECTTRANSLATE('ORACLE DATABASE', 'OLE', '01') result
& 2& FROMDUAL;
-------------
0RAC1 DATABAS
TRIM ( [ { {

我要回帖

更多关于 oracle设置字段默认值 的文章

 

随机推荐