数和值都是弧度而不是角度,oracle没有提供内建的弧度和角度的转换函数。  ABS()
  返回n的绝对值  ACOS()
  反余玄函数,返回-1到1之间的数。n表示弧度
select ACOS(-1) pi,ACOS(1) ZERO FROM dualPI ZERO3.14159265 0   ASIN()
  反正玄函数,返回-1到1,n表示弧度  ATAN()
  反正切函数,返回n的反正切值,n表示弧度。  CEIL()
  返回大于或等于n的最小整数。  COS()
  返回n的余玄值,n为弧度  COSH()
  返回n的双曲余玄值,n 为数字。
select COSH(<1.4>) FROM dualCOSH(1.4)2.15089847  EXP()
  返回e的n次幂,e=2.71828183.  FLOOR()
  返回小于等于N的最大整数。  LN()
  返回N的自然对数,N必须大于0  LOG(,)
  返回以n1为底n2的对数  MOD()
  返回n1除以n2的余数,  POWER(,)
  返回n1的n2次方  ROUND(,)
  返回舍入小数点右边n2位的n1的值,n2的缺省值为0,这回将小数点最接近的整数,如果n2为负数就舍入到小数点左边相应的位上,n2必须是整数。
select ROUND(12345,-2),ROUND(12345.54321,2) FROM dualROUND(12345,-2) ROUND(12345.54321,2)12300 12345.54  SIGN()
  如果n为负数,返回-1,如果n为正数,返回1,如果n=0返回0.  SIN()
  返回n的正玄值,n为弧度。  SINH()
  返回n的双曲正玄值,n为弧度。  SQRT()
  返回n的平方根,n为弧度  TAN()
  返回n的正切值,n为弧度  TANH()
  返回n的双曲正切值,n为弧度  TRUNC(,)
  返回截尾到n2位小数的n1的值,n2缺省设置为0,当n2为缺省设置时会将n1截尾为整数,如果n2为负值,就截尾在小数点左边相应的位上。  单行日期函数  单行日期函数操作DATA数据类型,绝大多数都有DATA数据类型的参数,绝大多数返回的也是DATA数据类型的值。  ADD_MONTHS(,<i>)
  返回日期d加上i个月后的结果。i可以使任意整数。如果i是一个小数,那么数据库将隐式的他转换成整数,将会截去小数点后面的部分。  LAST_DAY()
  函数返回包含日期d的月份的最后一天   MONTHS_BETWEEN(,)
  返回d1和d2之间月的数目,如果d1和d2的日的日期都相同,或者都使该月的最后一天,那么将返回一个整数,否则会返回的结果将包含一个分数。  NEW_TIME(,,)
  d1是一个日期数据类型,当时区tz1中的日期和时间是d时,返回时区tz2中的日期和时间。tz1和tz2时字符串。  NEXT_DAY(,)
  返回日期d后由dow给出的条件的第一天,dow使用当前会话中给出的语言指定了一周中的某一天,返回的时间分量与d的时间分量相同。
select NEXT_DAY('01-Jan-2000','Monday') "1st Monday",NEXT_DAY('01-Nov-2004','Tuesday')+7 "2nd Tuesday") from dual;1st Monday 2nd Tuesday03-Jan-2000 09-Nov-2004   ROUND([,])
  将日期d按照fmt指定的格式舍入,fmt为字符串。  SYADATE
  函数没有参数,返回当前日期和时间。  TRUNC([,]) 
  返回由fmt指定的单位的日期d.
单行转换函数  单行转换函数用于操作多数据类型,在数据类型之间进行转换。  CHARTORWID()
  c 使一个字符串,函数将c转换为RWID数据类型。
SELECT test_id from test_case where rowid=CHARTORWID('AAAA0SAACAAAALiAAA')   CONVERT(,[,])
  c尾字符串,dset、sset是两个字符集,函数将字符串c由sset字符集转换为dset字符集,sset的缺省设置为数据库的字符集。  HEXTORAW()
  x为16进制的字符串,函数将16进制的x转换为RAW数据类型。  RAWTOHEX()
  x是RAW数据类型字符串,函数将RAW数据类转换为16进制的数据类型。  ROWIDTOCHAR()
  函数将ROWID数据类型转换为CHAR数据类型。  TO_CHAR([[,)
  x是一个data或number数据类型,函数将x转换成fmt指定格式的char数据类型,如果x为日期nlsparm=NLS_DATE_LANGUAGE 控制返回的月份和日份所使用的语言。如果x为数字nlsparm=NLS_NUMERIC_CHARACTERS 用来指定小数位和千分位的分隔符,以及货币符号。
NLS_NUMERIC_CHARACTERS ="dg", NLS_CURRENCY="string"  TO_DATE([,[,)
  c表示字符串,fmt表示一种特殊格式的字符串。返回按照fmt格式显示的c,nlsparm表示使用的语言。函数将字符串c转换成date数据类型。  TO_MULTI_BYTE()
  c表示一个字符串,函数将c的担子截字符转换成多字节字符。  TO_NUMBER([,[,)
  c表示字符串,fmt表示一个特殊格式的字符串,函数返回值按照fmt指定的格式显示。nlsparm表示语言,函数将返回c代表的数字。  TO_SINGLE_BYTE()
  将字符串c中得多字节字符转化成等价的单字节字符。该函数仅当数据库字符集同时包含单字节和多字节字符时才使用  其它单行函数  BFILENAME( 
,)
  dir是一个directory类型的对象,file为一文件名。函数返回一个空的BFILE位置值指示符,函数用于初始化BFILE变量或者是BFILE列。  DECODE(,,[,,,[])
  x是一个表达式,m1是一个匹配表达式,x与m1比较,如果m1等于x,那么返回r1,否则,x与m2比较,依次类推m3,m4,m5....直到有返回结果。  DUMP(,[,[,[,]]])
  x是一个表达式或字符,fmt表示8进制、10进制、16进制、或则单字符。函数返回包含了有关x的内部表示信息的VARCHAR2类型的值。如果指定了n1,n2那么从n1开始的长度为n2的字节将被返回。  EMPTY_BLOB()
  该函数没有参数,函数返回 一个空的BLOB位置指示符。函数用于初始化一个BLOB变量或BLOB列。  EMPTY_CLOB()
  该函数没有参数,函数返回 一个空的CLOB位置指示符。函数用于初始化一个CLOB变量或CLOB列。  GREATEST()
  exp_list是一列表达式,返回其中最大的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,那么返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。  LEAST()
  exp_list是一列表达式,返回其中最小的表达式,每个表达式都被隐含的转换第一个表达式的数据类型,如果第一个表达式是字符串数据类型中的任何一个,将返回的结果是varchar2数据类型,同时使用的比较是非填充空格类型的比较。  UID
  该函数没有参数,返回唯一标示当前数据库用户的整数。  USER
  返回当前用户的用户名  USERENV()
  基于opt返回包含当前会话信息。opt的可选值为:  ISDBA    会话中SYSDBA脚色响应,返回TRUE 
  SESSIONID  返回审计会话标示符

解决方案 »

  1.   

    SQL> SELECT TO_NUMBER('14', 'XXX'), TO_NUMBER('3C', 'XXX'),
      2  TO_NUMBER('143C', 'XXXXXXX') FROM DUAL;TO_NUMBER('14','XXX') TO_NUMBER('3C','XXX') TO_NUMBER('143C','XXXXXXX')
    --------------------- --------------------- ---------------------------
                       20                    60                        5180
      

  2.   

    SELECT TO_NUMBER('14', 'XXX'), TO_NUMBER('3C', 'XXX'),
      2  TO_NUMBER('143C', 'XXXXXXX') FROM DUAL
    我运行相同的命令就出错,
    估计是我的版本低 是 oracle 8
      

  3.   

    我的 版本 是 8.0.5.0.0,运行同样出错:SELECT TO_NUMBER('14', 'XXX'), TO_NUMBER('3C', 'XXX') FROM DUAL
                           *
    错误位于第1行:
    ORA-01481: invalid number format model估计是因为版本低 :)
      

  4.   

    我的版本也是 oracle 8select TO_NUMBER('ff','XXXXXX') from dual ;TO_NUMBER('FF','XXXXXX')
    ------------------------
                         255