在oracle中,select语句查询字段中非纯数字值

本文转自:http://t.zoukankan.com/mq0036-p-6307506.html

 

1.Oracle 内置函数Translate找出非数字字符的记录

select trim(translate(RTRIM(LTRIM(ITEM_NUMBER)), '#0123456789', '#'))
from TestChar
Where trim(translate(RTRIM(LTRIM(ITEM_NUMBER)), '#0123456789', '#')) is not null;

 

2.再看看另外一个写的,也比较实用。

复制代码
--1.正则判断,适用于10g以上版本
--非正整数 
select 字段 fromwhere regexp_replace(字段,'d','') is not null;
--非数值类型
select 字段 fromwhere regexp_replace(字段,'^[-+]?d+(.d+)?$','') is not null;
--2.自定义函数,判断非值类型
create or replace function isnumber(col varchar2) return <a href="https://www.baidu.com/s?wd=integer&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1YdmWndnynknWfzrjDYuHF90ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EPjDvPjDYPHDs" target="_blank" class="baidu-highlight">integer</a> is
  i number;
begin
  i := to_number(col);
  return 1;
exception
  when others then
    return 0;
end;
select 字段 fromwhere isnumber(字段)=0;
复制代码

 

posted @   八戒不爱吃西瓜  阅读(2560)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示