`

ORACLE中有没有判断一个字符串是否可以转换成数字的函数

阅读更多

Org: http://topic.csdn.net/t/20031225/11/2601362.html

 

没有。如果是在pl/sql ,使用to_char() ,非法的可以触发exception

 

==============================================

 

那有点惨,我想在SELECT中取某一字段的值,如果它不是数字(空,''或者字母)的话就返回0,数字的话就返回本值,我不想触发那个EXCEPTION,有没有什么简单的方法?

 

===============================================

 

可以这样做
ucase(fieldname)=lcase(fieldname)
这样就能得到是数字了,
如果不等就说明里面不仅仅有数字
就不能转换

 

=============================================

 

没有
不行就用ascii码

 

=============================================

 

用ASCII来判断,数字的大小写是相等的,字符就不等:

 

==============================================

 

我这样写执行的时候还是报错说无效的数字,
SELECT TO_NUMBER(decode(decode(lower(N4),upper(N4),1,0),1,N4,0)) FROM TABLE
  其中N4是我的字段名,哪位大侠帮写一个,十分感谢,比较急!!

 

==============================================

 

你上面的代码问题呀?!


=======================================================================
SQL> SELECT TO_NUMBER(decode(decode(lower(sal),upper(sal),1,0),1,sal,0)) FROM my
emp;

TO_NUMBER(DECODE(DECODE(LOWER(SAL),UPPER(SAL),1,0),1,SAL,0))
------------------------------------------------------------
1
2
3
4
5
6
4
5
6
11
11

TO_NUMBER(DECODE(DECODE(LOWER(SAL),UPPER(SAL),1,0),1,SAL,0))
------------------------------------------------------------
0
0
0

已选择14行。

已用时间: 00: 00: 00.00
SQL> select sal from myemp;

SAL
----------
1
2
3
4
5
6
4
5
6
11
11

SAL
----------
a6
6b
a6

已选择14行。

已用时间: 00: 00: 00.00

 

=========================================

 

可能是我的数据库中有空值,或者如果只有一个空格的话是不是就出错了?

 

=========================================

 

那加上这两种情况判断的话是不是语句写的就很复杂,我们老大非要我用存存储过程实现,哪位能写一个IS_NUMBER之类的方法让我调用一下就OK?
同时非常感谢楼上做的测试!!

 

=========================================

 

可能是“可能是我的数据库中有空值”,那就家NVL函数:
SELECT TO_NUMBER(decode(decode(lower(nvl(sal,0)),upper(nvl(sal,0)),1,0),1,nvl(sal,0),0))
FROM myemp;

 

=========================================

 

谢谢lianhg,不过觉得那样也太。。。了
刚刚写了一个函数,这样就省事多了,结帐了
create or replace function PARSE_NUMBER
(VAR_VALUE IN VARCHAR)
return NUMBER is
Result NUMBER;
begin
Result := TO_NUMBER(VAR_VALUE);
return Result;
EXCEPTION WHEN others THEN
begin
return 0;
end;
end PARSE_NUMBER;

 

 

个人觉得最后那个函数比较好 

 

分享到:
评论

相关推荐

    oracle 如何判断一个字符串能否转换为数字?

    根据Oracle官方文档和提供的错误信息,我们可以得知该错误发生的根本原因是尝试将一个非数值型的字符串转换为数字时失败了。具体来说: - **错误原因**:当尝试将一个字符型字段转换为数字时,如果该字段包含的不是...

    oracle通过sql实现字符串转数字oracle函数

    首先,Oracle提供了一个内置函数`TO_NUMBER()`,它专门用于将字符串转换为数字。`TO_NUMBER(string, format_mask)`函数接收两个参数:要转换的字符串和可选的格式掩码。格式掩码允许我们指定字符串中数字的格式,...

    Oracle拆分字符串,字符串分割的函数

    `instr()` 是Oracle中的一个内建函数,它用于查找子串在目标字符串中的位置。例如,`instr(string, substring)` 返回`substring`在`string`中第一次出现的位置。虽然这不是直接的字符串分割函数,但可以配合其他...

    Oracle_Sql_中常用字符串处理函数

    UPPER() 函数将字符串转换为大写,而 LOWER() 函数将字符串转换为小写。 示例:SELECT UPPER('abcd') FROM dual; -- 返回 ABCD SELECT LOWER('ABCD') FROM dual; -- 返回 abcd 2. 字符串截取函数 Oracle Sql 提供...

    ORACLE字符串函数

    4. 字符串转换函数:`convert(string using conversion_name)` 该函数用于将字符串从一种编码转换为另一种编码。例如,`convert('PostgreSQL' using iso_8859_1_to_utf_8)`将返回 Unicode(UTF-8)编码的`'...

    Oracle字符相似度函数

    - **EDITDISTANCE()**:编辑距离(Levenshtein距离)函数,计算将一个字符串转换为另一个字符串所需的最少单字符编辑(插入、删除或替换)次数。返回值是具体的编辑距离,数值越小表示越接近。 在实际应用中,...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    Oracle 基础语句 函数大全(字符串函数

    4. **INITCAP** 函数:此函数将字符串中每个单词的首字母转换为大写,其余字母转为小写,如 `INITCAP('substr,abc,substring')` 返回 "Substr,Abc,Substring"。 5. **INSTR** 和 **INSTRB** 函数:这两个函数查找子...

    Oracle字符串处理函数

    ### Oracle字符串处理函数详解 #### 1. ASCII ASCII函数用于返回给定字符的ASCII码值。例如: ``` SQL> select ascii('A') A, ascii('a') a, ascii('0') zero, ascii(' ') space from dual; AAZERO SPACE ------...

    oracle日期字符串的相互转换

    **说明:**同样地,这里将一个10位的日期字符串转换成了日期类型。 #### 五、日期的加减运算 在Oracle中,可以直接对日期进行加减运算。 **示例:** ```sql SELECT TO_DATE('20111101', 'yyyyMMdd') + 1 FROM ...

    常用oracle字符串操作函数

    这两个函数分别用于将字符串转换为大写和小写。例如,`UPPER('hello')` 返回 'HELLO',`LOWER('WORLD')` 返回 'world'。 4. **INSTR()** 函数: `INSTR(str, substr[, start_position[, occurrence]])` 用于查找...

    oracle数字转换中文

    在给定的部分内容中,我们可以看到一个名为`money_to_chinese`的函数被创建或替换,该函数接收一个字符串参数`money`,并返回一个同样类型的字符串结果。这个函数的核心目的是将输入的数字(以字符串形式)转换为其...

    oracle非数字合计,将字段中含有汉子的数据自动转换为 数字0

    例如,在`table`表中有一个名为`column_name`的字段,该字段中可能存在诸如“一千”、“二万”这样的非标准数值表示,或者干脆就是汉字、符号等非数字字符。此时,如果直接使用`SUM()`函数对该字段进行求和操作,则...

    oracle分隔字符串函数

    本文将详细介绍如何在 Oracle 中实现字符串分隔功能,并通过创建一个自定义的函数来实现这一目标。 #### 二、需求背景 假设我们有一个包含逗号分隔的字符串列表,需要将其拆分为单独的字符串值以便进一步处理。...

    Oracle中如何用SQL检测字段是否包括中文字符

    突然想到Oracle有一个编码转换的函数叫Convert,如果一个字符串编码转换前后不一样表示字符串里面含有非ASCII字符,这样得到结果。后写出来测试了一下,确实可行,5500万记录10秒钟扫描结束。以下是测试用例:  ...

    Oracle常用字符串处理函数

    `INSTR` 函数用于查找一个字符串在另一个字符串中的位置。 - **函数格式**: - `INSTR(string, set[, start[, occurrence]]);` 其中: - `string`:原字符串。 - `set`:要查找的子字符串。 - `start`:从原...

    Oracle中实现Split函数功能

    在数据转换中,我们可以使用这个函数来将数据从一个格式转换为另一个格式。在数据分析中,我们可以使用这个函数来拆分字符串,以便更好地分析和理解数据。 Oracle 中实现 Split 函数功能可以大大提高数据处理和分析...

Global site tag (gtag.js) - Google Analytics