oracle pl/sql实现找到前面一个字母,怎么写呢就是一个函数,传B,得到A传C,得到B传Z,得到Y怎么实现最简单呢,
oracle pl/sql实现找到前面一个字母,怎么写呢
就是一个函数,传B,得到A
传C,得到B
传Z,得到Y
怎么实现最简单呢,我现在是一个一个判断的,很多个if语句
[解决办法]
使用ascii得到字符序号
select ascii('a') value from dual
然后减一得到字符
select chr(97) value from dual
组合起来即可.
select chr(ascii('a') - 1) value from dual
[解决办法]
- SQL code
select chr(ascii('b') - 1) "value" from dual/*v-a1 row selected.*/select chr(ascii('c') - 1) "value" from dual/*v-b1 row selected.*/select chr(ascii('z') - 1) "value" from dual/*v-y1 row selected.*/
[解决办法]
如果传为A-->前面没字母时怎么显示
[解决办法]
- SQL code
查看范围 select ascii('a'), ascii('z'), ascii('A'), ascii('Z') from dual;/** ASCII('A') ASCII('Z') ASCII('A') ASCII('Z')1 97 122 65 90**/select chr(97), chr(122), chr(65), chr(90) from dual;/** CHR(97) CHR(122) CHR(65) CHR(90)1 a z A Z**/
[解决办法]
[解决办法]
[code=SQL][/code]create or replace function f_change_alph (v_str in varchar2) return varchar2 is
v_ret varchar2(2);
begin
select translate(v_str,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','BCDEFGHIJKLMNOPQRSTUVWXYZA') into v_ret from dual;
return v_ret;
end f_change_alph;
--test
select f_change_alph('Z') res from dual;
A
[解决办法]
[Quote=引用:]
[code=SQL][/code]create or replace function f_change_alph (v_str in varchar2) return varchar2 is
v_ret varchar2(2);
begin
select translate(v_str,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','BCDEFGHIJKLMNOPQRS……
[/Quote]
+1
[解决办法]
- SQL code
--将b当作参数传入select decode('b','a','z',chr(ascii('b')-1)) as vaule from dual
[解决办法]
可以使用TRANSLATE()函数,轻松实现。
参考代码:
- SQL code
SELECT TRANSLATE(原始字符串, 'bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA', 'abcdefghijklmnopqrstuvwxyzaABCDEFGHIJKLMNOPQRSTUVWXYZ');
[解决办法]
translate函数果然牛!!!
[解决办法]
用catch case吧,很好的
