oracle function怎么用(大小写转换)?
我的问题是这样的,我希望对字段以下的数据修改成小写,把单引号内的所有字母改成小写,以下的是在字段里的一个数据,请帮忙以下,谢谢,利用oracle的function函数来写...
我的问题是这样的,我希望对字段以下的数据修改成小写,把单引号内的所有字母改成小写,以下的是在字段里的一个数据,请帮忙以下,谢谢,利用oracle的function函数来写。
DECODE(DECODE(MSS_MAP_NAME, 'UPLOC',MAP_REQ, 0), 0, 0, DECODE(MSS_MAP_NAME, 'UPLOC', MAP_RTZ,0) / DECODE(MSS_MAP_NAME, 'PRVSUBINFO', MAP_REQ, 0)) 展开
DECODE(DECODE(MSS_MAP_NAME, 'UPLOC',MAP_REQ, 0), 0, 0, DECODE(MSS_MAP_NAME, 'UPLOC', MAP_RTZ,0) / DECODE(MSS_MAP_NAME, 'PRVSUBINFO', MAP_REQ, 0)) 展开
展开全部
如果你的字段内保存的都是这些代码,你大可以把这个字段都改成小写,字段代码在执行时没有任何影响;
要实现你说的这个功能,必需要自定义函数,
要实现你说的这个功能,必需要自定义函数,
更多追问追答
追问
是的,我是有前提的,就是希望其他都是大写,就只有我截取的要小写。
追答
create or replace function conv_ul(l_str in varchar2) return varchar2
as
l_str1 varchar2(4000);
i pls_integer := 1;
d_start pls_integer := 1;
begin
if instr(l_str,'''',1,i)=0 then
return l_str;
end if;
while instr(l_str,'''',1,i)>0 loop
select l_str1||decode(mod(i,2),1,substr(l_str,d_start,instr(l_str,'''',1,i)-d_start)||'''',lower(substr(l_str,d_start,instr(l_str,'''',1,i)-d_start)||'''')) into l_str1 from dual;
d_start := instr(l_str,'''',1,i)+1;
i := i+1;
end loop;
return l_str1||substr(l_str,d_start);
end;
/
SELECT CONV_UL('DECODE(DECODE(MSS_MAP_NAME, ''UPLOC'',MAP_REQ, 0), 0, 0, DECODE(MSS_MAP_NAME, ''UPLOC'', MAP_RTZ,0) / DECODE(MSS_MAP_NAME, ''PRVSUBINFO'', MAP_REQ, 0)')
) FROM DUAL;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询