在oracle中,如何用一条select语句查询字段中非纯数字值

要将非纯数字的值列出来,包括空值... 要将非纯数字的值列出来,包括空值 展开
 我来答
帐号已注销
2015-06-11 · TA获得超过315个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:251万
展开全部
--1.正则判断,适用于10g以上版本
--非正整数 
select 字段 from 表 where regexp_replace(字段,'\d','') is not null;
--非数值类型
select 字段 from 表 where regexp_replace(字段,'^[-\+]?\d+(\.\d+)?$','') is not null;
--2.自定义函数,判断非值类型
create or replace function isnumber(col varchar2) return integer is
  i number;
begin
  i := to_number(col);
  return 1;
exception
  when others then
    return 0;
end;
select 字段 from 表 where isnumber(字段)=0;
ytffhvk316
2012-04-27
知道答主
回答量:17
采纳率:0%
帮助的人:7.1万
展开全部

CREATE FUNCTION IS_INTEGER(IN_VARCHAR IN VARCHAR2) RETURN INTEGER AS

  FLAG INTEGER;

  I    INTEGER;

BEGIN

  FOR I IN 1 .. LENGTH(IN_VARCHAR) LOOP

    IF ASCII(SUBSTR(IN_VARCHAR,I,1))>= 48 AND

       ASCII(SUBSTR(IN_VARCHAR,I,1))<= 57 THEN

      FLAG:= 0;

    ELSE

      FLAG:= -1;

      EXIT;

    END IF;

  END LOOP;

  RETURN FLAG;

END IS_INTEGER;

自己亲测,有图有真相,希望能帮助到你。

追问
谢谢,再试试看~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unitech2010
2012-04-27 · TA获得超过1062个赞
知道小有建树答主
回答量:1025
采纳率:100%
帮助的人:910万
展开全部
where isnumeric(字段)>0 是纯数字的
where ( isnumeric(字段)<0 or 字段为null)非纯数字的值,包括空值
更多追问追答
追问
oracle中有 isnumeric的么?
追答
where ( isnumeric(字段)<0  or 字段为null)非纯数字的值,包括空值 -------这是在sqlserver 用

oracle 中需要先定义isnumeric
CREATE OR REPLACE FUNCTION isnumeric (str IN VARCHAR2)
RETURN NUMBER
IS
BEGIN
IF str IS NULL
THEN
RETURN 0;
ELSE
IF regexp_like (str, '^(-{0,1}+{0,1})[0-9]+(.{0,1}[0-9]+)$')--数值
/*(str, '^[0-9]*[1-9][0-9]*$') --正整数*/
THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END IF;
END isnumeric;
先创建函数,再用一下代码查询:
select * from 表 where ( isnumeric(字段)=0 or 字段 is null)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Gorillatorch
2012-04-27 · TA获得超过128个赞
知道答主
回答量:90
采纳率:0%
帮助的人:62.5万
展开全部
select *
from table_name
where translate(column_name,'#0123456789','#') is not null or column_name is null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式