求用一条SQL语句判断一个字符串是否是数字的办法
现在大家都是用函数的方式来判断一个字符串是否是数字,但是现在有没有只用一条SQL语句就能判断字符串是否是数字呢?有的话请各位大侠不吝赐教,谢谢
现在大家都是用函数的方式来判断一个字符串是否是数字,但是现在有没有只用一条SQL语句就能判断字符串是否是数字呢?有的话请各位大侠不吝赐教,谢谢
解决方案 »
- Oracle分区表的导入操作
- 现在想用触发器做实时备份到另外一台服务器上,但怕影响数据库的效率?有高招吗?
- 请高手指点一下我这个java的初哥,关于java调用oracle储存过程的问题?
- 把oracle数据库中数据库如何导入另一个数据库啊,
- 弱弱的问一下。。
- Oracle10g在windows2003上无法安装,各位高手帮我!
- 直接用SQL可以从SYS.ALL_TAB_COLS表中可以查到结果,可是从存储过程中确拿不到?
- 求一条sql语句
- 关于数据导入的问题,很急手(在线等待)
- In Pro*c, 为什么我不能用#define UNAME_LEN 20 去定义常量. 高分
- 如何通过Sql语句将一个数值型字段转化为日期类型
- commit怎么加?
declare
dummy_ number;
begin
select to_number('&string') into dummy_ from dual;
:info := 'Is a number string!';
dbms_output.put_line('Is a number string!');
EXCEPTION
WHEN others THEN
:info := 'Is not a number string!';
dbms_output.put_line('Is not a number string!');
end;
/
select REGEXP_LIKE(字段, [[:digit:]] ) from dual;
----------
2SQL> select 1+1 from dual where REGEXP_LIKE('aaa', '[[:digit:]]') ;no rows selectedSQL> select 1+1 from dual where REGEXP_LIKE('222', '[[:digit:]]') ; 1+1
----------
2
select '1' as str from dual union
select '1.1' from dual union
select '1.a' from dual union
select '-6.0' from dual union
select '+6.0'from dual union
select '.9'from dual) a
where NVL(TRANSLATE (str, '.0123456789', '.'),'.') in('+.','-.','.')
/*
STR
+6.0
-6.0
.9
1
1.1*/
也许oracle以后会写个函数is_number ,或者自己写个也行啊。
如果是10g,还是用正则表达式吧
ID RMAK
------------------
21 litt1232dd
9 litt1232
23 tom
21 125delitt1232
9 ggg
10 123--SQL语句
SELECT * from a where translate(lower(rmak),'0123456789','0000000000')=rpad('0',length(rmak),'0');--执行结果只显示是数字的行
ID RMAK
-----------------
10 123