计算机二级DELPHI的to_char()函数详解

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  to_char(sysdate, /'FMMonth DD, YYYY/'); would return /'July 9, 2003/'
  to_char(sysdate, /'FMMON DDth, YYYY/'); would return /'JUL 9TH, 2003/'
  to_char(sysdate, /'FMMon ddth, YYYY/'); would return /'Jul 9th, 2003/'
  The zeros have been suppressed so that the day component shows as /"9/" as opposed to /"09/".
  Oracle函数to_char转化数字型指定小数点位数的用法
  to_char,函数功能,就是将数值型或者日期型转化为字符型。
  比如最简单的应用:
  /*1.0123--->/'1.0123/'*/
  Select TO_CHAR(1.0123) FROM DUAL
  /*123--->/'123/'*/
  Select TO_CHAR(123) FROM DUAL
  接下来再看看下面:
  /*0.123 ---> /'.123/' */
  SELEC TO_CHAR(0.123) FROM DUAL
  上面的结果 /'.123/' 在大多数情况下都不是我们想要的结果,我们想要的应该是 /'0.123/'。
  我们来看一下to_char函数的具体用法:
  TO_CHAR ( n [, fmt [, /'nlsparam/']] )
  该函数将NUMBER类型的n按数值格式fmt转换成VARCHAR2类型的值。/'nlsparams/'指定由数值格式的元素返回的字符,包括:
  .小数点字符
  .组分隔符
  .本地钱币符号
  .国际钱币符号
  变元的形式为:
  /'NLS_NUMERIC_CHARACTERS=/"dg/" NLS_CURRENCY=/"tcxt/" NLS_ISO_CURRENCY=territory/'
  其中d为小数点字符,g为组分隔符。
  例 :TO_CHAR (17145,/'L099G999/',/'NLS_NUMERIC_CHARACTERS=/".,/" NLS_CURRENCY=/"NUD/"/')=NUD017,145
  通过上面的了解,再查看fmt的一些格式,我们可以用以下表达式得到/'0.123/'的值:
  /*0.123 ---> /' 0.123/' */Select TO_CHAR(0.123,/'0.999/') FROM DUAL
  /*100.12 ---> /'######/' */Select TO_CHAR(100.12,/'0.999/') FROM DUAL
  /*1.12 ---> /' 1.120/' */Select TO_CHAR(1.12,/'0.999/') FROM DUAL
  /' 0.123/'是出来了,可是前面又多了一个空格。
  对于 100.12 的值却是######,以及/'1.12/'的值变成了 /'1.120/'。
  我们重新确定一个新的需求:
  1、去空格
  2、小数点最多4位,最少保留2位。
  1--->/'1.00/';1.1--->/'1.00/';1.12-->/'1.12/';1.1234--->/'1.1234/';
  1.12345--->/'1.1235/'
  最终实现如下:
  /*
  FM :除空格 9999999.0099:允许小数点左边最大正数为7位,小数点右边最少2位,最多4位,且在第5位进行四舍五入
  */Select TO_CHAR(123.0233,/'FM9999999.0099/') FROM DUAL
  # re: oracle to_char 用法 2007-01-04 18:49 Sammy
  PLSQL小经验
  一、 Oracle的to_char()函数功能很强大但是在用它格式化数值型数据时应该请注意以下几项。如果是小数如:0.23这样的数据经过to_char后再显示会变为.23,如果你为了让它显示出原来的0.23的话就得用To_char(要格式化的数值,’0.999’)保留三个小数,并显示但这里就要注意了。他为你截取小数的时候是四舍五入了。所以如果是要求截掉小数而不四舍五入的话就应该自己写个函数截下去后再规格化。以保证它不四舍五入。
  二、 To_char(1.9999,’FM90.0999’)这个函数规格化时90.0999的含义是有9的地方如果有数字就显示如果没有数字就不显示,有0的地方在没有数字的时候也会有0来占位.但这样做也有一个很大的缺点,就是如果是整数时它也仍然会显示”.”,不要小瞧这个点,一般来讲页面上要显示的话这个点就是多余的.也给我们造成了不小的麻烦.还要自己再写函数来把这个小点搞定.或者 直接调用系统函数:rtrim(to_char(1,/'FM90.999/'),/'./')
  三、 对于日期型的Oracle倒时提供了一个好的处理方法,可以把日期做成数值型的.然后再To_char就能显示出你所需要的类型了.
  四、 在使用select into时一定要注意,这种方法你一定要确认肯定会有数据被查出时才能使用.如果查询结果为空时会导致报错.还有一种情况是查出来的数据是多条也会报错.所以应该尽量便宜游标来做.会减少错误产生的机率.
  五、 还有注意一点rownum不支持排序,就是说你想用这个来控制行数的话就会发现他没有按你指定的排序方式显示.,这是一个很难办的事.而且如果你用rownum=2这样的语句来输出第二行的话也是行不通的. 六、 最恶心的一点是Oracle对null的判断变态到极点.如果你说某个变量 aa=null它是判断不出来的.尽管aa的确是空.即使在选择条件里也是判断不出来的.不知道为什么,只好用nvl()这个函数来判断了.在条件之外可以用 aa is null 来判断.
  六 补充一点.就是在写存储过程时要注意参数名不能与数据库字段名相同.否则Oracle会把这个参数名看成是字段名的,即使你用表的别名区分也不行.所以起参数名的时候一定要注意这点了.

  特别推荐:

  2009年9月全国计算机等级考试时间及科目预告

  2009年上半年全国计算机等级考试参考答案请进入计算机考试论坛

  2009年全国计算机等级考试报名信息汇总

  2009年NCRE考试有新变化

  2009年全国计算机等级考试大纲

  2009年上半年全国计算机二级考试试题及答案

  2009年上半年全国计算机等级考试试题答案汇总

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答