oracle没有给我们提供判断某一列是否全部由数字组成的函数,那么根据我的经验我总结了两个行之有效的方法(列名:column,表名:table):
- select * from table where trim(translate(column,'0123456789',' ')) is NULL;
复制代码 translate函数的第三个参数是一个空格,不是'', 因为translate的第三个参数如果为空的话,那么永远返回'',这样的就不能达到过滤纯数字的目的。这样把所有的数字都转化为空格,如果全部是由数 构成,那么一旦trim后自然是空,实现了上述目标。当然如果想排除空项的话,可以这样写:
- select * from table where trim(translate(nvl(column,'x'),'0123456789',' ')) is NULL;--x 表示任何'0-9'以外的字符。
复制代码
|