oracle查询字段时,如果字段值包括数字则取数字部分,如果无数字则默认为0,如果是数字则取原值
oracle查询字段时,如果字段值包括数字则取数字部分,如果无数字则默认为0,如果是数字则取原值,这种情况怎样实现...
oracle查询字段时,如果字段值包括数字则取数字部分,如果无数字则默认为0,如果是数字则取原值,这种情况怎样实现
展开
3个回答
展开全部
Oracle 没有自带的判断数字函数的,只能变形
Try this one,
SELECT DECODE(
(REPLACE(TRANSLATE(TRIM(xxxxx),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(xxxxxx) ) )
FROM dual
顺便BS下哪个 名要长长长长长 ,你不懂ORACLE就不要装懂。自己不懂就随便否定人家。最讨厌你这种沽名钓誉的人。
DECODE( (REPLACE(TRANSLATE(TRIM(xxxxx),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(xxxxxx) ) )
楼主可以尝试这个,里面的XXXX就是你的字段。
SELECT
DECODE( (REPLACE(TRANSLATE(TRIM(field1),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(field1) ) )
from tab
ORACLE 10G下面通过了,对于包含数字的,结果是0;全部是数字的,结果是数字自己本身。
Try this one,
SELECT DECODE(
(REPLACE(TRANSLATE(TRIM(xxxxx),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(xxxxxx) ) )
FROM dual
顺便BS下哪个 名要长长长长长 ,你不懂ORACLE就不要装懂。自己不懂就随便否定人家。最讨厌你这种沽名钓誉的人。
DECODE( (REPLACE(TRANSLATE(TRIM(xxxxx),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(xxxxxx) ) )
楼主可以尝试这个,里面的XXXX就是你的字段。
SELECT
DECODE( (REPLACE(TRANSLATE(TRIM(field1),'0123456789','00000000000'),'0' ,NULL)),
0, to_number(trim(field1) ) )
from tab
ORACLE 10G下面通过了,对于包含数字的,结果是0;全部是数字的,结果是数字自己本身。
展开全部
select
case when length(trim(字段名))-length(regexp_replace(trim(字段名),'[0-9]',''))=0 then '0'
when length(regexp_replace(trim(字段名),'[0-9]',''))=0 then 字段名
else substr(字段名,REGEXP_INSTR(trim('aaa1'),'[0-9]'),length(trim(字段名))-length(regexp_replace(trim(字段名),'[0-9]','')))end
from 表名;
case when length(trim(字段名))-length(regexp_replace(trim(字段名),'[0-9]',''))=0 then '0'
when length(regexp_replace(trim(字段名),'[0-9]',''))=0 then 字段名
else substr(字段名,REGEXP_INSTR(trim('aaa1'),'[0-9]'),length(trim(字段名))-length(regexp_replace(trim(字段名),'[0-9]','')))end
from 表名;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼的答案很明显不行。
你这个东西,写函数。或者java,c什么的写代码,在oracle里调用。
你这个东西,写函数。或者java,c什么的写代码,在oracle里调用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询