- 浏览: 335003 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (198)
- HIBERNATE (8)
- JAVA (13)
- 数据库 (24)
- SPRING (1)
- LINUX (0)
- 需求管理 (3)
- 职业提升 (6)
- 团队建设 (1)
- 日常用到语句 (1)
- FLEX (6)
- 用户体验 (3)
- 设计模式 (6)
- weblogic (2)
- PowerDesigner (3)
- HTML (7)
- ANT (7)
- 工具. (1)
- bat (5)
- 存储过程 (1)
- strus2 (1)
- DWR (2)
- jfreechart (4)
- 上线测试优化 (17)
- JVM (9)
- 工具使用 (2)
- 算法 (3)
- 私事 (0)
- 数据库-Oracle session (1)
- 软件开发 (5)
- 产品 (2)
- 项目管理 (4)
- oracle语句 (1)
- IntelliJ IDEA (4)
- GRAILS (10)
- Groovy (1)
- JS (1)
- DUBBO (1)
- JAVA EXCEL (3)
- netty websocket (1)
- kafka (1)
- 秘钥体系 (2)
- golang (6)
- gradle (1)
- spring cloud (0)
最新评论
-
wujt:
...
Grails_数据库逆向工程插件 db-reverse-engineer -
yy8093:
我也遇到这个问题,不过并不觉得是个好的方法。。。。不过最后也确 ...
关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting s -
wujt:
# ----- Execute The Requested C ...
jconsole基础配置(原创) -
gaowei52306:
你好,请问remotedir="/home/dmwe ...
Ant FTP -
抢街饭:
ant生成日志 在命令行也能看见 怎么去做啊
ant生成日志
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;
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;
发表评论
-
在oracle10g中如何恢复drop掉的表
2014-11-19 15:17 771在oracle10g中如何恢复drop掉的表 在oracl ... -
左关联右关联全关联
2014-11-10 17:06 3857左关联右关联全关联 参考:http://www.cn ... -
win8系统倒入数据imp-00058错误
2014-09-21 17:52 669win8系统倒入数据imp-00058错误 ... -
查询闪存
2013-12-17 09:36 746(1)查询目标表30分钟前的数据 select * from ... -
ORA-00031: session marked for kill 处理Oracle中杀不掉的锁
2013-08-16 13:35 701ORA-00031: session marked for k ... -
Oracle创建表空间、创建用户以及授权
2013-07-30 11:30 683Oracle创建表空间、创建用户以及授权 创建临时表空间 创 ... -
Oracle中诊断阻塞session的方法 blocking error
2014-10-22 11:36 682Oracle中诊断阻塞session的方法 blocking ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:58 0查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL
2013-01-19 13:57 2606查询Oracle中的阻塞锁(以及阻塞在哪个数据上)的SQL 数 ... -
ORACLE阻塞
2013-01-19 13:56 889ORACLE阻塞 案例一: 34.//SYS窗口 35. ... -
数据库阻塞和死锁的区别(转载)
2013-01-19 13:30 1340数据库阻塞和死锁的区别(转载) 数据库阻塞和死锁在程序开发过程 ... -
oracle 死锁和锁等待的区别(转载)
2013-01-19 13:27 1295oracle 死锁和锁等待的区别(转载) 所谓的锁等待:就是 ... -
关于“ORA-00060:等待资源时检测到死锁”问题的分析(转载)
2013-01-19 13:26 1319关于“ORA-00060:等待资源时检测到死锁”问题的分析(转 ... -
查询Oracle正在执行和执行过的SQL语句
2013-01-18 22:55 0查询Oracle正在执行和执行过的SQL语句 ---正在执 ... -
如何检测被锁住的Oracle存储过程(转帖)
2013-01-18 17:39 840如何检测被锁住的Oracle存储过程(转帖) 1.查看是哪 ... -
Oracle死锁的处理
2013-01-18 17:29 715Oracle死锁的处理 Oracle死锁问题应该如何解决呢?可 ... -
oracle 查询所有表的记录数 SQL
2013-01-18 15:06 1253oracle 查询所有表的记录数 SQL create o ... -
oracle enterprise manager console 出现 ora-12154:TNS:无法处理的服务名
2011-11-27 20:23 1165登录oracle enterprise manager con ... -
启动服务报错ORA-12505
2011-10-25 18:23 1438今天在工作中配置plsqldev时,报错误是找不到服务名 同 ... -
ORACLE-数据库导出(exp)/ 导入(imp)
2011-06-09 09:42 1462exp 将数据库内的各对象以二进制方式下载成dmp 文件, ...
相关推荐
oracle中操作字符串(带有,的字符串,从中取出“:”前面或后面的值)
oracle里面没有sql server里面的类似函数is_number来判断能否转换为数字,怎么办?本文给出答案。
oracle通过sql实现字符串转数字oracle函数,可用于字符串的最终排序
oracle中如何判断一个字符串是否含有汉字.pdforacle中如何判断一个字符串是否含有汉字.pdforacle中如何判断一个字符串是否含有汉字.pdf
判断字符串是否包含emoji表情
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('我...
C#连接Oracle数据库字符串 C#连接Oracle数据库字符串
oracle,按特定字符,截取字符串,直接出结果 oracle,按特定字符,截取字符串,直接出结果oracle,按特定字符,截取字符串,直接出结果
在实际工作中经常遇到截取两个相同字符串之间的字符的oracle问题,以下是相关语句
Oracle拆分字符串,字符串分割的函数,将返回一个表格,如果有需要的可以下载去看看。
oracel中判断字段是否为数字的函数,查找非法字符解决多表关联报错
传入一个字符串和该字符串的分割字符,返回去重后的字符串,可以直接在plsql中运行,简单的函数运用,能处理oracle中。资源仅供参考
介绍了将多行转为字符串的三种方案,并比较了三种方案的执行效率. 1.sys_connect_by_path + start with ... connect by ... prior + 分析函数 2.自定义Function/SP 3.使用 Oracle 10g 内置函数 wmsys.wm_concat
oracle 中字符串截取 。oracle中字符截取的函数。
ORACLE字符串函数ORACLE字符串函数ORACLE字符串函数
突然想到Oracle有一个编码转换的函数叫Convert,如果一个字符串编码转换前后不一样表示字符串里面含有非ASCII字符,这样得到结果。后写出来测试了一下,确实可行,5500万记录10秒钟扫描结束。以下是测试用例: ...
Oracle 验证是否是日期,帮助你验证给定的字符串是否可以转化为日期。
Oracle_Sql_中常用字符串处理函数
Oracle 数据库连接字符串大全教程,含异地或服务器数据库连接,亲测可用,实用!
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。