
在Oracle 中写function ,新手求解
若年份为2001-2009年的话,取最后一位数字,若年份为2010-2099年的话,就用字母A-Z表示作循环,其中I,O,S,Z字母不用,若年份为2101-2109年的话...
若年份为2001-2009年的话,取最后一位数字,若年份为2010-2099年的话,就用字母A-Z表示作循环,其中I,O,S,Z字母不用,若年份为2101-2109年的话,依然取最后一位数,若年份为2111-2199年的话,接着上面的字母循环下去,依次类推。。。
用oracle function 怎么写,新手求解。。。 展开
用oracle function 怎么写,新手求解。。。 展开
展开全部
基本语法就不说了,给你提供一个比较简单的思路。
假设输入参数为v_year
首先定义一个字符串,vs_str:='ABCDEFGHJKLMNPQRTUVWXY'
取输入参数的后两位vn_l2,也就是用100取模,vn_l2:=mod(v_year,100)
如果vn_l2小于10,则取个位数。
如果vn_l2大于等于10,则取vs_str串中的某一位。因vs_str共22个字符串,所以该字符串中用22取模得到的数对应的字符就是想要的结果,如果模为0,则返回最后一个字符。
if vn_l2 < 10 then
return vn_l2;
else
vn_p := mod(vn_l2-9,22);
if vn_p = 0 then
return 'Y';
else
return substr(vs_str,vn_p,1)
end if;
end if;
假设输入参数为v_year
首先定义一个字符串,vs_str:='ABCDEFGHJKLMNPQRTUVWXY'
取输入参数的后两位vn_l2,也就是用100取模,vn_l2:=mod(v_year,100)
如果vn_l2小于10,则取个位数。
如果vn_l2大于等于10,则取vs_str串中的某一位。因vs_str共22个字符串,所以该字符串中用22取模得到的数对应的字符就是想要的结果,如果模为0,则返回最后一个字符。
if vn_l2 < 10 then
return vn_l2;
else
vn_p := mod(vn_l2-9,22);
if vn_p = 0 then
return 'Y';
else
return substr(vs_str,vn_p,1)
end if;
end if;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询