CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

不用循环如何求出某字符串中的半角数字的位置

楼主asia2158()2004-12-01 03:44:02 在 Oracle / 开发 提问

请问如何能够让程序在不使用循环的情况下找出某字符串中的半角数字的位置  
  如:   "西风路2号",要在不使用循环的情况下返回   数字'2'出现的位置,  
  即:4         ???  
  谢谢!  
  问题点数:50、回复次数:17Top

1 楼GerryYang(轻尘)回复于 2004-12-01 08:26:40 得分 5

在VB里面可以,但是在oracle里面不知道.Top

2 楼ORARichard(没钱的日子......)回复于 2004-12-01 08:29:54 得分 0

这种情况复杂,最好写函数。如果在你的字符串中只有一个半角字符且只出现一次,还好做些。Top

3 楼zmgowin(hermit)回复于 2004-12-01 08:38:16 得分 15

08:43:09   SQL>   select   instr('西风路2号',substr(replace(translate('西风路2号',repl  
  ace(translate('西风路2号','0123456789','   '),'   ',''),'   '),'   ',''),1,1))   from   dual  
  ;  
   
  INSTR('西风路2号',SUBSTR(REPLACE(TRANSLATE('西风路2号',REPLACE(TRANSLATE('西风路  
  2号','0123456789',''  
  --------------------------------------------------------------------------------  
  --------------------  
   
                                        4  
   
  已用时间:     00:   00:   00.16Top

4 楼wupangzi(无本之木)回复于 2004-12-01 08:47:40 得分 0

zmgowin(隐者(龙祖宗))的想法是好的,但是半角的东西还很多比如字母等等!  
  我觉得要写函数!Top

5 楼wupangzi(无本之木)回复于 2004-12-01 08:49:04 得分 0

哦,我看错了,原来版主只要求,数字!SORRY!zmgowin(隐者(龙祖宗))Top

6 楼ORARichard(没钱的日子......)回复于 2004-12-01 08:54:35 得分 0

西风路2-1  
  西风路2号01室  
  西风路23号  
  .  
  .  
  .  
  这么多种格式,怎么用一句话写Top

7 楼asia2158()回复于 2004-12-01 13:35:38 得分 0

只要找到第一个出现的数字即可Top

8 楼ORARichard(没钱的日子......)回复于 2004-12-01 13:54:01 得分 0

select   instr(translate('西风路2号','0123456789','~~~~~~~~~~'),'~')   from   dual;Top

9 楼ORARichard(没钱的日子......)回复于 2004-12-01 13:56:03 得分 0

'~'可以用任何在字符串中不会出现的字符代替Top

10 楼ORARichard(没钱的日子......)回复于 2004-12-01 13:58:25 得分 0

or:  
   
  select   instr(translate('西风路2号','0123456789','0'),'0')   from   dual;  
   
  这样最好  
  Top

11 楼qiaozhiwei(乔)回复于 2004-12-01 13:59:10 得分 15

SELECT   INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0')   FROM   DUAL;  
   
  INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0')  
  -----------------------------------------------------------  
                                                                                                                      4Top

12 楼qiaozhiwei(乔)回复于 2004-12-01 14:02:57 得分 0

ORARichard(没钱的日子好难过啊)  
  or:  
   
  select   instr(translate('西风路2号','0123456789','0'),'0')   from   dual;  
   
  这样最好  
   
  ------------------------------------------------------------------------------  
  这个不行,TRANSLATE   是按位匹配的,如果第三个参数是'0',则出现123456789是都会匹配为NULL,  
  这样的话就找不到字符,例如上面这个查询,结果为:  
  INSTR(TRANSLATE('西风路2号','1234567890','0'),'0')  
  --------------------------------------------------  
                                                                                                    0  
  Top

13 楼asia2158()回复于 2004-12-01 14:14:25 得分 0

非常感谢大家的支持,我的问题可能还没有说清楚,是这样:  
  一张表:STREE:内有路名,详细地址两个主要字段:  
  路名                             详细地址  
  西风路                           1号  
  (这是正常的记录)  
                                        西风路2号-------(这是不正常的)  
  录入的人吧路名和详址全写到"详细地址"字段里去了,所以现在要做个过程,用游标去把记录一条一条取出来,然后处理,而数字是分解这类记录的唯一标识,但由于某种原因,不能用循环.  
  我也觉得要求有点变态,可是没办法,请大家帮帮我Top

14 楼ORARichard(没钱的日子......)回复于 2004-12-01 14:35:11 得分 0

to   qiaozhiwei(乔)  
  你说的没错。是我的笔误,我的第一句中还是10个空格呢。可这句改漏了。Top

15 楼ORARichard(没钱的日子......)回复于 2004-12-01 14:41:05 得分 15

update   stree   set   路名=substr(详细地址,1,INSTR(TRANSLATE(详细地址,   '1234567890',   '0000000000'),   '0')),详细地址=substr(详细地址,INSTR(TRANSLATE(详细地址,   '1234567890',   '0000000000'),   '0'),length(详细地址)-INSTR(TRANSLATE(详细地址,   '1234567890',   '0000000000'),   '0')+1)   where   INSTR(TRANSLATE(详细地址,   '1234567890',   '0000000000'),   '0')>0;Top

16 楼asia2158()回复于 2004-12-01 14:54:32 得分 0

好,我去试试Top

17 楼asia2158()回复于 2004-12-04 14:35:51 得分 0

谢谢大家!!!Top

相关问题

  • 怎么样用循环得到带数字的字符串啊
  • 怎么循环取出字符串“1,2,12,31,213,5”里的数字啊?
  • 字符串半角边全角
  • 数字字符串转换
  • 数字转字符串
  • 数字转字符串
  • 如何将全角的字符串转换成半角字符串?
  • 怎么把字符串和数字连接成字符串
  • 请问如何将数字字符串换成数字以及在字符串中提取数字字符串。
  • 如何转换字符串为数字?

关键词

  • 数字
  • 字符
  • 半角
  • 字符串
  • translate
  • 西风路2号
  • instr
  • 详细地址
  • 位置
  • substr

得分解答快速导航

  • 帖主:asia2158
  • GerryYang
  • zmgowin
  • qiaozhiwei
  • ORARichard

相关链接

  • Oracle类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo