function中的一个语句

JS 2012-04-11 10:47:18
CREATE FUNCTION "tab"."F_PERCENT" (
"P" DECIMAL(16,10),
"D" INTEGER )
RETURNS CHARACTER(20)
SPECIFIC "SQL120401142399999"
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
READS SQL DATA
CALLED ON NULL INPUT
INHERIT SPECIAL REGISTERS
begin ATOMIC
declare c char(20);
set c=(
select case when p>=0.01 then
trim(T '.' from trim(B '0' from trim(char(round(p*100,d)))))||'%'
else '0'||trim(T '.' from trim(B '0' from trim(char(round(p*100,d)))))||'%'
end
from SYSIBM.SYSDUMMY1
);
return c;
end;

trim里面的看不懂,请高人指点
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssqtjffcu 2012-04-12
  • 打赏
  • 举报
回复

TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)
如果没有指定任何参数则oracle去除c1头尾空格
例如:SELECT TRIM(' WhaT is tHis ') FROM DUAL;
如果指定了c2参数,则oracle去掉c1头尾c2(这个建议细致测试,有多种不同情形的哟)
例如:SELECT TRIM('W' FROM 'WhaT is tHis w W') FROM DUAL;
如果指定了leading参数则会去掉c1头部c2
例如:SELECT TRIM(leading 'W' FROM 'WhaT is tHis w W') FROM DUAL;
如果指定了trailing参数则会去掉c1尾部c2
例如:SELECT TRIM(trailing 'W' FROM 'WhaT is tHis w W') FROM DUAL;
如果指定了both参数则会去掉c1头尾c2(跟不指定有区别吗?没区别!)
例如:SELECT TRIM(both 'Wh' FROM 'WhaT is tHis w W') FROM DUAL;

注意:c2长度=1
秋雨飘落 2012-04-12
  • 打赏
  • 举报
回复
case when
trim
round
--------就这么几个函数~
JS 2012-04-12
  • 打赏
  • 举报
回复
谢谢[Quote=引用 2 楼 的回复:]

SQL code

TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)
如果没有指定任何参数则oracle去除c1头尾空格
例如:SELECT TRIM(' WhaT is tHis ') FROM DUAL;
如果指定了c2参数,则oracle去掉c1头尾c2(这个建议细致测试,有多种不同情形的哟)
例如:SELECT TRIM('W' FRO……
[/Quote]
jdsnhan 2012-04-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

SQL code

TRIM([[LEADING||TRAILING||BOTH] c2 FROM] c1)
如果没有指定任何参数则oracle去除c1头尾空格
例如:SELECT TRIM(' WhaT is tHis ') FROM DUAL;
如果指定了c2参数,则oracle去掉c1头尾c2(这个建议细致测试,有多种不同情形的哟)
例如:SELECT TRIM('W' FRO……
[/Quote]

楼主把上面测试的语句都执行一遍,就能理解了。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧