不用循环如何求出某字符串中的半角数字的位置 在VB里面可以,但是在oracle里面不知道. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 08:43:09 SQL> select instr('西风路2号',substr(replace(translate('西风路2号',replace(translate('西风路2号','0123456789',' '),' ',''),' '),' ',''),1,1)) from dual;INSTR('西风路2号',SUBSTR(REPLACE(TRANSLATE('西风路2号',REPLACE(TRANSLATE('西风路2号','0123456789',''---------------------------------------------------------------------------------------------------- 4已用时间: 00: 00: 00.16 zmgowin(隐者(龙祖宗))的想法是好的,但是半角的东西还很多比如字母等等!我觉得要写函数! 哦,我看错了,原来版主只要求,数字!SORRY!zmgowin(隐者(龙祖宗)) select instr(translate('西风路2号','0123456789','~~~~~~~~~~'),'~') from dual; or:select instr(translate('西风路2号','0123456789','0'),'0') from dual;这样最好 SELECT INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0') FROM DUAL;INSTR(TRANSLATE('西风路2号','1234567890','0000000000'),'0')----------------------------------------------------------- 4 ORARichard(没钱的日子好难过啊)or:select instr(translate('西风路2号','0123456789','0'),'0') from dual;这样最好------------------------------------------------------------------------------这个不行,TRANSLATE 是按位匹配的,如果第三个参数是'0',则出现123456789是都会匹配为NULL,这样的话就找不到字符,例如上面这个查询,结果为:INSTR(TRANSLATE('西风路2号','1234567890','0'),'0')-------------------------------------------------- 0 非常感谢大家的支持,我的问题可能还没有说清楚,是这样:一张表:STREE:内有路名,详细地址两个主要字段:路名 详细地址西风路 1号(这是正常的记录) 西风路2号-------(这是不正常的)录入的人吧路名和详址全写到"详细地址"字段里去了,所以现在要做个过程,用游标去把记录一条一条取出来,然后处理,而数字是分解这类记录的唯一标识,但由于某种原因,不能用循环.我也觉得要求有点变态,可是没办法,请大家帮帮我 to qiaozhiwei(乔)你说的没错。是我的笔误,我的第一句中还是10个空格呢。可这句改漏了。 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; oracal的安装问题 向存储过程传一个参数,根据参数让游标的sql发生变化 oracel中两个timestamp差值的问题? 急助:执行sqlplus时出现ora-12547:tns:丢失联系 请教sql? 如何输出带序号的记录集?? Date型的累計問題 FETCH 中一定要用INTO吗 过程中的一个错误 比对两张表数据,判断谁比谁多,记录新表 可否在PL/SQL程序中动态建表? 请教:“roa-04093:不允许在触发器中引用Long类型的列”,,Why??
ace(translate('西风路2号','0123456789',' '),' ',''),' '),' ',''),1,1)) from dual
;INSTR('西风路2号',SUBSTR(REPLACE(TRANSLATE('西风路2号',REPLACE(TRANSLATE('西风路
2号','0123456789',''
--------------------------------------------------------------------------------
-------------------- 4已用时间: 00: 00: 00.16
我觉得要写函数!
-----------------------------------------------------------
4
or:select instr(translate('西风路2号','0123456789','0'),'0') from dual;这样最好------------------------------------------------------------------------------
这个不行,TRANSLATE 是按位匹配的,如果第三个参数是'0',则出现123456789是都会匹配为NULL,
这样的话就找不到字符,例如上面这个查询,结果为:
INSTR(TRANSLATE('西风路2号','1234567890','0'),'0')
--------------------------------------------------
0
一张表:STREE:内有路名,详细地址两个主要字段:
路名 详细地址
西风路 1号
(这是正常的记录)
西风路2号-------(这是不正常的)
录入的人吧路名和详址全写到"详细地址"字段里去了,所以现在要做个过程,用游标去把记录一条一条取出来,然后处理,而数字是分解这类记录的唯一标识,但由于某种原因,不能用循环.
我也觉得要求有点变态,可是没办法,请大家帮帮我
你说的没错。是我的笔误,我的第一句中还是10个空格呢。可这句改漏了。