12
返回列表 发新帖
楼主: tjzhao2005

字符串判斷問題

[复制链接]
论坛徽章:
28
生肖徽章:马
日期:2006-09-07 17:01:08ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章:马
日期:2007-09-26 17:10:27生肖徽章:马
日期:2007-09-26 17:08:44生肖徽章:马
日期:2007-09-26 12:38:09生肖徽章:马
日期:2007-09-26 12:37:34生肖徽章:马
日期:2007-09-26 12:36:52生肖徽章:马
日期:2007-09-26 12:36:10生肖徽章:马
日期:2007-09-26 12:35:29蓝色妖姬
日期:2006-09-07 17:04:50
11#
发表于 2006-9-6 12:50 | 只看该作者
最初由 ruili_zeng 发布
[B]其實有更好的方法。
判斷一個字符串是否是數字


SQL> select decode(ltrim('9797979765464','0123456789'),null,'Yes','No') Is_Number from dual;

IS_NUMBER
---------
Yes

SQL> select decode(ltrim('adjd3939','0123456789'),null,'Yes','No') Is_Number from dual;

IS_NUMBER
---------
No

SQL> [/B]

这方法判断一个字符串中是否含有特定字符是不错,但如果像LZ一样要把非数字和非字母的排除,但如果含有隐形字符如回车和空格...等符号,就容易判断出错.
select decode(ltrim('adjd3939 ',
                    '0123456789
                     abcdefghijklmnopqrstunwsyz
                     ABCDEFGHIJKLMNOPQRSTUNWSYZ'),
              null,
              'Yes',
              'No') Is_Number
  from dual;

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2006-9-6 13:59 | 只看该作者
直接写不就得了吗.
DECLARE
  p_str  VARCHAR2(100);
  m      NUMBER;
  p_flag VARCHAR2(20);
  s      VARCHAR2(20);
BEGIN
  p_str := 'A324Z';
  m     := length(p_str);
  FOR i IN 1 .. m LOOP
    --dbms_output.put_line(SUBSTR(p_str, i, 1));
    s := SUBSTR(p_str, i, 1);
    IF NOT ((s >= 'A' AND s <= 'Z') OR (s >= '0' AND s <= '9')) THEN
      p_flag := 'F';
    END IF;
  END LOOP;
  dbms_output.put_line(p_flag);
END;

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表