您的位置:程序门 -> db2 -> 基础类



帮帮我吧!db2中数字转化为字符串的函数的问题?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


帮帮我吧!db2中数字转化为字符串的函数的问题?
发表于:2007-11-15 16:08:36 楼主
帮帮我吧!数字转化为字符串的函数的问题?
有三个数字2005,11,15
有一个表达式   select   date('2005-11-15')   from   table
因为那三个数字全是数值型变量,为别为year,mon,day   ,所以我想实现
select   date(数字转为字符串函数(year) ¦ ¦'-'数字转为字符串函数(mon) ¦ ¦'-'数字转为字符串函数(day   ))   from   table

现在的问题是想求db2中函数:数字转为字符串函数,oracle中是to_char()
网上有人说是str(),但我试了根本不行。请各位帮帮我。谢谢了!
发表于:2007-11-15 17:20:231楼 得分:0
用cast
cast(2008   as   char(4))
发表于:2007-11-15 17:30:042楼 得分:0
char(integer)
发表于:2007-11-16 18:12:213楼 得分:0
char()
发表于:2007-11-19 10:52:434楼 得分:0
select   date(rtrim(char(2005)) ¦ ¦'-' ¦ ¦rtrim(char(11)) ¦ ¦'-' ¦ ¦rtrim(char(15)))   from   sysibm.sysdummy1
发表于:2007-11-20 15:32:545楼 得分:0
db2中的to_char比较弱,只可以把timestamp转成'yyyy-mm-dd   hh:mi:ss'之类的format
发表于:2007-11-24 00:52:186楼 得分:0

  解决方案     1:digits()   +   substr()   一起使用

select   date(substr(digits(2004),7,4) ¦ ¦'-' ¦ ¦substr(digits(9),9,2) ¦ ¦'-' ¦ ¦substr(digits(30),9,2))     from   sysibm.sysdummy1

result   set   :   2004-09-30   00:00:00.0

注:   digits(   parameter)   ,   if   the   parameter   is   integer   ,   结果值是10   位长的字符,   如果参数位数不足10位,在其左边补0   。   例如:   digits(30)->   ‘0000000030'


    解决方案     2:   rtrim()   +   char()   一起使用

    eg:
select       date(rtrim(char(2005))   ¦ ¦   '-'   ¦ ¦rtrim(char(4))   ¦ ¦   '-'   ¦ ¦rtrim(char(15)))       from       sysibm.sysdummy1;

result   set   :     2005-04-15   00:00:00.0

注:   1)   char(parameter)   ,     if   the   parameter   is   integer   ,   结果值是11   位长的字符,如果参数位数不足11位,在其右边补   '   '   (也就是空字符   '   '   )
          2)   rtrim   function   removes   blanks   from   the   end   of   the   argument.

这里推荐解决方案   2

这里谢谢4楼分享,   希望这个总结帮到你各。
发表于:2007-11-30 11:29:537楼 得分:0
其实,这样就可以了

select   date(cast(year(current   date)   as   char(4)) ¦ ¦'-' ¦ ¦cast(month(current   date)   as   char(2)) ¦ ¦'-' ¦ ¦cast(day(current   date)   as   char(2)))   from       sysibm.sysdummy1;
发表于:2007-11-30 17:11:508楼 得分:0
@!@上面的已经说清楚了。


快速检索

最新资讯
热门点击