谁能告诉我Oracle里to_number()函数的用法。

rocie 2002-09-10 05:15:59
To_Number(S,F,Nlsparams)
将字符串按F格式转换成为数字

能讲讲参数的含义吗?
...全文
46501 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaoyongzhu 2002-09-11
  • 打赏
  • 举报
回复
SQL> select to_number('000012134') from dual;

TO_NUMBER('000012134')
----------------------
12134
bzszp 2002-09-11
  • 打赏
  • 举报
回复
直接转换即可
SQL> select to_number('00001228') from dual;

TO_NUMBER('00001228')
---------------------
1228

实际:1262
rocie 2002-09-11
  • 打赏
  • 举报
回复
我查过文档了,感觉文档说得太不清楚了,对 那些参数的含义根本没有介绍的。
我现在要把000012134,000034301这类数据转换为数值,请问该如何用to_number()函数呢?
rocie 2002-09-11
  • 打赏
  • 举报
回复
呵呵,谢谢各位了。
erbird 2002-09-10
  • 打赏
  • 举报
回复
1.语法:TO_NUMBER(string[,format[,nlsparams]])
目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。
2.范例
DECLARE
v_Num NUMBER;
BEGIN
v_Num := TO_NUMBER('$12345.67','$99999.99');
END;
jlandzpa 2002-09-10
  • 打赏
  • 举报
回复
为什么不去查查文档呢?
qiuyang_wang 2002-09-10
  • 打赏
  • 举报
回复
TO_NUMBER
Syntax
TO_NUMBER(char [,fmt [, 'nlsparams'] ])

Purpose
Converts char, a value of CHAR or VARCHAR2 datatype containing a number in the format specified by the optional format model fmt, to a value of NUMBER datatype.


Example 1
UPDATE emp SET sal = sal +
TO_NUMBER('100.00', '9G999D99')
WHERE ename = 'BLAKE';


The 'nlsparams' string in this function has the same purpose as it does in the TO_CHAR function for number conversions.


Example 2
SELECT TO_NUMBER('-AusDollars100','L9G999D99',
' NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''AusDollars''
') "Amount"
FROM DUAL;

Amount
----------
-100

rocie 2002-09-10
  • 打赏
  • 举报
回复
UPDATE employees SET salary = salary +
TO_NUMBER('100.00', '9G999D99')
WHERE last_name = 'Perkins';

SELECT TO_NUMBER('-AusDollars100','L9G999D99',
' NLS_NUMERIC_CHARACTERS = '',.''
NLS_CURRENCY = ''AusDollars''
') "Amount"
FROM DUAL;

我找到两个例子的,但还是看不懂那些参数的含义。
bluecetacean 2002-09-10
  • 打赏
  • 举报
回复
语法:TO_NUMBER(string[,format[,nlsparams]])
目的:将CHAR或VARCHAR2类型的string转换为一个NUMBER类型的数值,如果指定了format,那么string应该遵循相应的数字格式。nlsparams的用来指定小数点和钱分位分隔符,以及货币符号。它与TO_CHAR()互为反函数
bzszp 2002-09-10
  • 打赏
  • 举报
回复
我的资料可能太老了
:-)
我试了一下,可以带多个参数
其中最后面的那个是字符集参数
如果数字格式在规定格式以内,可以用,在规定格式以外的话,就会出错

SQL> select to_number('$12345.678', '$999999.99') from dual;
select to_number('$12345.678', '$999999.99') from dual
*
ERROR 位于第1行:
ORA-01722: 无效数字


实际:60
bzszp 2002-09-10
  • 打赏
  • 举报
回复
oracle中的to_number函数只有一个参数,因此,不能直接达到你的要求

SQL> select trunc(to_number('123.123'),2) from dual;

TRUNC(TO_NUMBER('123.123'),2)
-----------------------------
123.12

实际:40
wumugulu 2002-09-10
  • 打赏
  • 举报
回复
示例:
declare
v_num number;
begin
v_num := to_number('$ 12345.67', '$ 999999.99');
end;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧