- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表格,其中的数字存储为 varchar2
和“.”作为小数点分隔符(例如“5.92843”)。
我想使用“,”来计算这些数字,因为这是系统默认设置,并使用了以下 to_number
来执行此操作:
TO_NUMBER(number,'99999D9999','NLS_NUMERIC_CHARACTERS = ''.,''')
我的问题是有些数字可能很长,因为字段是 VARCHAR2(100)
,当它比我定义的格式长时,我的 to_number
失败带有 ORA-01722
。
有什么方法可以定义动态数字格式?只要我可以设置我的十进制字符,我就不太关心格式。
最佳答案
Is there any way I can define an unlimited number format?
唯一的方法是在 session 范围内为nls_numeric_characters
参数设置适当的值,并在不指定格式掩码的情况下使用to_number()
函数。
这是一个简单的例子。小数分隔符是逗号","
,数字文字包含句点"."
作为小数分隔符:
SQL> show parameter nls_numeric_characters;
NAME TYPE VALUE
------------------------------------ ----------- ------
nls_numeric_characters string ,.
SQL> with t1(col) as(
2 select '12345.567' from dual union all
3 select '12.45' from dual
4 )
5 select to_number(col) as res
6 from t1;
select to_number(col)
*
ERROR at line 5:
ORA-01722: invalid number
SQL> alter session set nls_numeric_characters='.,';
Session altered.
SQL> with t1(col) as(
2 select '12345.567' from dual union all
3 select '12.45' from dual
4 )
5 select to_number(col) as res
6 from t1;
res
--------------
12345.567
12.45
关于sql - to_number Oracle SQL 中数字格式的动态长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20196816/
SELECT TO_NUMBER('*') FROM DUAL 这显然给了我一个异常(exception): ORA-01722: invalid number 有没有办法“跳过”它并获取 0 或 N
在 postgres 8.2 版上使用 Greenplum: 当我调用这个函数时: CREATE OR REPLACE FUNCTION test_function(_date date) RETUR
我需要将 CHARACTER VARYING 列转换为 NUMERIC 类型。源列包含如下值:9.9; 99.9;无效的。我使用以下 SQL 指令: ALTER TABLE test ALTER CO
在这个查询中使用 oracle 中的 to_number()。如何编写oracle和mysql数据库的兼容性查询。 SELECT col1 FROM table WHERE condition ORD
今天写sql的时候,发现PG里有一张表的面积字段竟然设置成字符串类型,这样就不能统计使用sum函数了,所以需要将字符串转换成double类型再相加。 select sum(to_number
我有一个主表(以下称为 SURVEY)和一个详细表(以下称为 ANSWERS)。不出所料,ANSWERS 有 SURVEY 问题的答案。 ANSWERS 有一个名为 TEXT 的 VARCHAR2 列
使用 Oracle SQL,当字符串(VARCHAR2 列)可以包含以下任一内容时,如何将字符串转换为数字: 固定符号的数字,例如 -11.496606820938826 SELECT TO_NUMB
我有一个带有数字的 VARCHAR2,写成小数点和小数部分,例如.02。使用时 TO_NUMBER(NUMBER_COLUMN) 我得到一个错误 ORA-01722: invalid number 表
我想使用 postgresql to_number(numberString, format_mask)。我的 numberString 可能包含前导零(我不知道这些零的实际长度和 numberStr
如果记录数超过某个数字 n,则在 varchar2 列的 where 子句中执行 to_number 函数时,我会遇到间歇性问题。我使用 n 是因为没有确切数量的记录发生。在一个 DB 上,它发生在
我有一个表格,其中的数字存储为 varchar2 和“.”作为小数点分隔符(例如“5.92843”)。 我想使用“,”来计算这些数字,因为这是系统默认设置,并使用了以下 to_number 来执行此操
下面的 to_number 格式说明符有什么问题? SELECT TO_NUMBER('0,22', '0,99') * 100 FROM DUAL; 结果是 2200 而不是 22 -- 我做错了什
我在 postgres 中有一个表,其中包含已解析的地址信息。当我运行以下查询时,我得到了正确的结果: select count(*) from address_table where (mod(
我需要从 string 转换程序至decimal带固定小数分隔符 .独立于文化环境。接下来,我知道十进制数在 . 之后只有 6 个小数位。并且 . 之前的位数没有限制.使用 Oracle 文档及其格式
我正在使用 hibernate 分离条件从表(Oracle 数据库)中获取结果。我需要通过提升某些列来获取结果顺序。该列包含数字,但数据类型为 varchar。如果我们不对列应用 to_number(
我正在尝试通过发票编号连接两个表中的数据, LOC NOT NULL VARCHAR2(40) INV_ORG NUMBER 像这样它工作正常: SELECT
根据我对 formatting documentation 的阅读,我没有从 PostgreSQL 的函数“to_number”中得到预期的行为.所以我可能读错了。有人可以对此进行解释,以便我知道在其
我有两个查询在尝试将 CHAR 转换为 NUMBER 时给出错误 ORA-01722: invalid number。 SELECT to_number('NYC TERM') FROM dual;
我在这里遇到过类似的日期问题(to_date 和 nullif 的组合):How to use decode in sql-loader? 很好地解决了。 我的问题是我的 CSV 文件中的数字字段可以
为什么 select * from ( SELECT LEVEL as VAL FROM DUAL CONNECT BY LEVEL = 100 抛出一个 ORA-01722 无效数
我是一名优秀的程序员,十分优秀!