当前位置:  数据库>oracle
本页文章导读:
    ▪SQL语句函数详解__sql聚合函数 - 流转的岁月        函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:单行函数、组函数本文将讨论如何使用.........
    ▪ora-01031:insufficient privileges解决方法总结 - 冲动      注意多个数据库实例时候,set ORACLE_SID='',1、检查sqlnet.ora(WINDOWS下位于%ORACLE_HOME%NETWORKADMIN目录)是否包含这句:SQLNET.AUTHENTICATION_SERVICES=(NTS),没有的话加上 2、检查登陆windows的用户(admini.........
    ▪Oracle —— 函数 length() 和 lengthb() 的区别 - Memory4Young      先看看几个例子:select length('Oracle') from dual结果:6 select lengthb('Oracle') from dual结果:6 select length('甲骨文') from dual结果:3 select lengthb('甲骨文') from dual结果:6 【区别:】length().........

[1]SQL语句函数详解__sql聚合函数 - 流转的岁月
    来源: javascript开源软件 iis7站长之家   发布时间: 2013-10-29

  函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类:单行函数、组函数

本文将讨论如何使用单行函数及组函数以及使用规则。

1 SQL中的单行函数

  SQL和PL/SQL中自带很多类型的函数,有字符、数字、日期、转换、和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数。这些函数均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等单行函数。

 

SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')

FROM emp

Where UPPER(ename) Like 'AL%'

ORDER BY SOUNDEX(ename)

 

  单行函数也可以在其他语句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句,认证考试特别注意在SELECT语句中使用这些函数,所以我们的注意力也集中在SELECT语句中。

1.1 NULL和单行函数

  在如何理解NULL上开始是很困难的,就算是一个很有经验的人依然对此感到困惑。NULL值表示一个未知数据或者一个空值,算术操作符的任何一个操作数为NULL值,结果均为提个NULL值,这个规则也适合很多函数,只有CONCAT,DECODE,DUMP,NVL,REPLACE在调用了NULL参数时能够返回非NULL值。在这些中NVL函数时最重要的,因为他能直接处理NULL值,NVL有两个参数:NVL(x1,x2),x1和x2都式表达式,当x1为null时返回X2,否则返回x1。

  下面我们看看emp数据表它包含了薪水、奖金两项,需要计算总的补偿

 

column name emp_id salary bonus

 

key type pk

nulls/unique nn,u nn

fk table

datatype number number number

length 11.2 11.2

 

  不是简单的将薪水和奖金加起来就可以了,如果某一行是null值那么结果就将是null,比如下面的例子:

 

update emp

set salary=(salary+bonus)*1.1

 

  这个语句中,雇员的工资和奖金都将更新为一个新的值,但是如果没有奖金,即 salary + null,那么就会得出错误的结论,这个时候就要使用nvl函数来排除null值的影响。

Nvl(int,int)

所以正确的语句是:

 

update emp

set salary=(salary+nvl(bonus,0)*1.1

 

1.2 单行字符串函数

  单行字符串函数用于操作字符串数据,他们大多数有一个或多个参数,其中绝大多数返回字符串

 

ASCII(c1)

  c1是一字符串,返回c1第一个字母的ASCII码,他的逆函数是CHR()

 

SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM emp

 

BIG_A BIG_z

65 122

 

CHR(i)[NCHAR_CS]

  i是一个数字,函数返回十进制表示的字符

 

select CHR(65),CHR(122),CHR(223) FROM emp

 

CHR65 CHR122 CHR223

A z B

 

Concat(c1,c2)

  c1,c2均为字符串,函数将c2连接到c1的后面,如果c1为null,将返回c2.如果c2为null,则返回c1,如果

    
[2]ora-01031:insufficient privileges解决方法总结 - 冲动
    来源:    发布时间: 2013-10-29

注意多个数据库实例时候,set ORACLE_SID='',

1、检查sqlnet.ora(WINDOWS下位于%ORACLE_HOME%NETWORKADMIN目录)是否包含这句:SQLNET.AUTHENTICATION_SERVICES=(NTS),没有的话加上

 2、检查登陆windows的用户(administrator或安装oracle时候使用的用户)是不是在包含在ORA_DBA组(计算机--管理---本地用户和组--租--ORA_DBA)中,域用户没有连上域服务器时就可能出现这种现象。

3. 要保证 remote_login_passwordfile 参数 = EXCLUSIVE .

4. 看看是否需要使用orapassw生成口令文件 .

 

一种解决方法案例

1、检查系统参数: SQL> show parameter password

NAME                                 TYPE        VALUE ------------------------------------ ----------- ------------------------------ remote_login_passwordfile            string      EXCLUSIVE

2、 select * from v$pwfile_users; SQL> 为空

3、 SQL> grant sysdba to sys; grant sysdba to sys * ERROR at line 1: ORA-01994: GRANT failed: password file missing or disabled

4、建立password文件 D:/>orapwd file="D:/oracle/product/10g/db_1/database/PWDoratest.ora" password=gp oswong entries=10

5、 SQL> select * from v$pwfile_users;

USERNAME                       SYSDB SYSOP ------------------------------ ----- ----- SYS                            TRUE  TRUE SYS正常显示出来。

6、重新在远程以SYSDBA登录,可正常使用。

 

如果口令文件创建的有问题,也是会报如下的错误:

ora-01031:insufficient privileges

口令文件的命名格式应为orapwsid,并且sid是区分大小写的。由于Target Database连接Auxiliary Database时需要验证口令, 如果违反了以上规则,将会提示ORA-01031: insufficient privileges。

我在用linux创建duplicate数据库的时候 就是因为口令文件创建的路径和名称不对才遇到这个错误


本文链接:http://www.cnblogs.com/codealone/p/3272270.html,转载请注明。


    
[3]Oracle —— 函数 length() 和 lengthb() 的区别 - Memory4Young
    来源:    发布时间: 2013-10-29

先看看几个例子:

select length('Oracle') from dual

结果:6

 

select lengthb('Oracle') from dual

结果:6

 

select length('甲骨文') from dual

结果:3

 

select lengthb('甲骨文') from dual

结果:6

 

【区别:】

length()返回的是 字符数

lengthb()返回的是 字节数

 

【用途:】

a、可以查询某个字段都是英文的记录

SELECT * FROM TBL_NAME WHERE LENGTH(COL_A) = LENGTHB(COL_A)

 

b、可以查询某个字段包含中文的记录

SELECT * FROM TBL_NAME WHERE LENGTH(COL_A) <> LENGTHB(COL_A)

 

 

 


本文链接:http://www.cnblogs.com/memory4young/p/oracle-function-length-lengthb.html,转载请注明。


    
最新技术文章:
▪current online redo log缺失后的恢复
▪ORA-600 2662错误解决实例
▪ORA-00600 2662错误解决方法
▪Oracle Hidden Parameter:_allow_resetlogs_corruption
▪Oracle诊断事件列表
▪Oracle 隐含参数 _disable_logging 详解
▪ORA-00600 [2662]错误解决过程
▪Oracle里常见的执行计划
▪Oracle里另外一些典型的执行计划
▪Oracle服务器自动备份
▪Oracle固定SQL的执行计划(一)---SQL Profile
▪Oracle固定SQL的执行计划(二)---SPM
▪同一环境下新建Standby RAC库
▪Oracle快速克隆安装
▪Oracle单实例启动多个实例
▪Oracle的PLSQL别名中文出现乱码解决方法
▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
▪RMAN-06023: no backup or copy of datafile 16 found to restor...
▪RMAN还原数据库报错问题解决案例
▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
▪Oracle 性能优化建议
▪Oracle SQL语句优化心得
▪Oracle慢SQL监控脚本实现
▪Oracle dblink 查询 tns:无法解析指定的连接标识...
▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
▪Oracle 12C 开启数据库归档模式
▪Solairs系统中配置Oracle 12c 开机启动
▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
▪Oracle ASMM 与AMM之间相互切换
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3