`

oracle中如何判断字符串是否全为数字,以及从任意字符串中提取数字

 
阅读更多
本文介绍了判断字符串是否全为数字的4种办法,另外还介绍了一个translate函数的小技巧,从任意字符串中提取数字(调用2次translate函数)。这个办法是一个公司同事发现的,用起来很方便,但理解起来稍有点困难。
1、通过ASCII码判断是否数字,介于[48, 57]之间,(ascii('0') = 48, ascii('9') = '57')
2、调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常
3、调用translate函数,剔除所有[0-9]数字后,看是否为空串
4、调用正则表达式,进行模式匹配(10g版本新加入的功能)



[SQL] view plaincopy
01.--通过ASCII码判断是否数字,介于[48, 57]之间,(ascii('0') = 48, ascii('9') = '57') 
02.DECLARE 
03.    str             VARCHAR2(10) := '123a'; 
04.    val             NUMERIC(10); 
05.    i               int; 
06.    k               int; 
07.    flag            BOOLEAN; 
08.BEGIN 
09.    flag := TRUE; 
10.    for i in 1..10 loop   --新密码是否6位数字 
11.        k := ascii(substr(str, i, 1)); 
12.        if k < 48 or k > 57 THEN 
13.            flag := FALSE; 
14.        end if; 
15.    end LOOP; 
16.     
17.    IF flag = true THEN 
18.        dbms_output.put_line(str || '是[0-9]的数字序列'); 
19.    ELSE 
20.        dbms_output.put_line(str || '不是[0-9]的数字序列'); 
21.    END IF; 
22.END; 
23. 
24.-- 调用cast函数尝试强制转换成NUMERIC或NUMBER,不是合法数字串即抛异常 
25.DECLARE 
26.    str    VARCHAR2(10) := '123'; 
27.    val    NUMERIC(10); 
28.BEGIN 
29.    val := CAST(str AS NUMERIC); 
30.    dbms_output.put_line(str || '是[0-9]的数字序列'); 
31.EXCEPTION 
32.   WHEN value_error THEN -- 字符串转实数错误 
33.       --dbms_output.put_line(SQLCODE || ', ' || SQLERRM); 
34.       dbms_output.put_line(str || '不是[0-9]的数字序列'); 
35.END; 
36. 
37.--调用translate函数,剔除所有[0-9]数字后,看是否为空串 
38.DECLARE 
39.    str VARCHAR2(10) := '123abc'; 
40.BEGIN 
41.    IF replace(translate(str, '0123456789', '0'), '0', '') IS NULL THEN 
42.        dbms_output.put_line(str || '是[0-9]的数字序列'); 
43.    ELSE 
44.        dbms_output.put_line(str || '不是[0-9]的数字序列'); 
45.    END IF; 
46.END; 
47. 
48.--调用正则表达式,进行模式匹配(10g版本新加入的功能) 
49.SELECT * 
50.FROM dual 
51.WHERE regexp_like('1234', '^[[:digit:]]+$'); 
52. 
53.--从任意字符串中提取数字串(调用2次translate函数)。 
54.--假定初始串为str。首先将str中数字全部替换为空格,输出记为str2; 
55.--其次,对每个在str中出现的任意str2串中字符,如果是str2的首字符则替换为空格,其它字符则全部剔除 
56.DECLARE 
57.    --str    VARCHAR2(100) := ' 护照01浙江2     3昆 山4苏 3'; 
58.    str    VARCHAR2(100) := ' 护照浙江     昆 山苏 4'; 
59.    ret    VARCHAR2(10); 
60.BEGIN 
61.    ret := TRIM(TRANSLATE(str, trim(TRANSLATE(str, '1234567890', '          ')), ' ')); 
62.    dbms_output.put_line(ret); 
63.END; 
分享到:
评论

相关推荐

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

    ### Oracle 判断字符串是否能转换为数字的方法 在Oracle数据库中,我们经常需要处理各种数据类型之间的转换。尤其是在处理字符型数据时,有时我们需要判断一个字符串是否能够被成功地转换成数字类型。与SQL Server...

    oracle中操作字符串

    本文将详细介绍如何利用Oracle内置函数来实现从含有逗号和冒号的字符串中提取特定部分的功能。 #### 1. 使用REGEXP_SUBSTR函数 `REGEXP_SUBSTR`函数是Oracle提供的一种强大的工具,用于从文本字符串中提取匹配正则...

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

    在Oracle数据库中,将字符串转换为数字是一项常见的操作,特别是在处理包含数字的字符串列时,可能需要进行数值计算或按照数值大小进行排序。本篇文章将深入探讨如何在SQL查询中利用Oracle提供的函数来实现这一目标...

    判断字符串中是否包含emoji表情

    判断字符串是否包含emoji表情

    C#连接Oracle数据库字符串

    C#连接Oracle数据库字符串 C#连接Oracle数据库字符串

    Oracle查找字符串中某字符出现的次数

    select f_find('Ap@2233ll@@l@@','@') from dual 返回结果为5,代表‘@’在该字符串中出现5次。 同理 select f_find('Ap@223SWEQQQ3ll@@l@@','Q') from dual---返回3,代表Q在字符串中出现了3次, select f_find('我...

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

    `substr()` 用于从字符串中提取指定长度的部分。例如,`substr(string, start_position, length)` 返回从`start_position`开始,长度为`length`的子串。结合`instr()`,可以逐个截取字符串的不同部分。 3. **...

    Oracle连接字符串

    Oracle 连接字符串是指连接 Oracle 数据库的字符串书写方法,本文总结了多种连接 Oracle 数据库的字符串书写方法。 一、标准连接字符串 标准连接字符串是最基本的连接字符串格式,用于连接 Oracle 数据库。例如,...

    Oracle_Sql_中常用字符串处理函数

    Oracle Sql 中提供了多种字符串处理函数,用于对字符串进行各种操作,如大小写转换、截取、连接、查找、替换等。下面是 Oracle Sql 中常用的字符串处理函数: 1. 大小写转换函数 Oracle Sql 提供了两个大小写转换...

    oracle遍历数据库查找字符串

    本文将深入探讨如何使用Oracle遍历数据库查找字符串,以及一个简化此过程的工具。 标题"Oracle遍历数据库查找字符串"暗示了一个实用的解决方案,它允许用户快速搜索Oracle数据库中的特定文本字符串,无需手动编写...

    oracle 关于字符串中带有逗号间隔的查询.doc

    在Oracle数据库中,进行字符串查询时,特别是当字符串中包含逗号等特殊字符时,我们需要巧妙地使用SQL的LIKE操作符来实现精确匹配。这里,我们面对的问题是想要查询DWDH字段中含有"飞信"但不包含"移动飞信"或"飞信...

    Oracle JSON 字符串处理实例

    Oracle还提供了`GET_JSON_OBJECT`和`GET_JSON_ELEMENT`等函数来提取JSON字符串中的特定字段。例如: ```sql SELECT GET_JSON_OBJECT(json_column, '$.name') AS name FROM your_table ``` 这会从`json_column`列中...

    Oracle 数据库连接字符串大全教程

    Oracle 数据库连接字符串大全教程 Oracle 数据库连接字符串大全教程旨在提供了完整的 Oracle 连接字符串大全,涵盖了异地或服务器数据库连接、ODBC 连接、OLE DB 连接、Oracle.DataAccess.Client.OracleConnection ...

    oracle中字符串截取

    ### Oracle中字符串截取知识点详解 #### 一、概述 在Oracle数据库中,对字符串进行截取是一项常用且重要的操作。本文将详细介绍Oracle中的字符串截取功能及其应用场景,包括常用的`INSTR`和`SUBSTR`函数,并通过...

    oracle按特定字符截取字符串

    oracle,按特定字符,截取字符串,直接出结果 oracle,按特定字符,截取字符串,直接出结果oracle,按特定字符,截取字符串,直接出结果

    如何用oracle 截取两个相同字符串之间的字符

    在实际工作中经常遇到截取两个相同字符串之间的字符的oracle问题,以下是相关语句

    oracle-字符串去重函数

    传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考

    Oracle 获取JSON字符串对象的属性值

    在标题和描述中提到的,我们需要通过SQL语句从存储在数据库字段中的JSON字符串中提取特定属性的值。Oracle提供了多种方法来处理这种需求,其中包括基础的字符串操作函数和正则表达式功能。 首先,Oracle的`substr()...

    oracle数据库截取字符串

    Oracle数据库提供了多种截取字符串的方法,本文将介绍 substr 和 instr 两个常用函数,以及 case when then else end 语句的使用。 一、substr 函数 substr 函数用于截取字符串的一部分,语法为 `substr(string, ...

Global site tag (gtag.js) - Google Analytics