日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ORACLE TO_CHAR的一个问题

發(fā)布時間:2025/3/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ORACLE TO_CHAR的一个问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在完成一個PL/SQL程序的時候,發(fā)現(xiàn)我寫個一個DECODE判斷總是返回一個值,有問題。那個判斷的細(xì)節(jié)是,只要某個日期為所在周的周一,返回1,否則返回0.
???
??? 例如:
select decode(to_char(to_date(to_char(sysdate, 'yy') || '0714',? 'yymmdd'),'day', 'NLS_DATE_LANGUAGE = American'),
??????????????'monday',1,0)
??from dual;
???
????? 這是應(yīng)該返回1,但是運行該SQL,卻總是返回0。
????? 奇怪,怎么搞的。趕快測試了一下長度:
select??length(to_char(TO_DATE(TO_CHAR(SYSDATE, 'yy') ||
????????????????????????????????????'0714',
????????????????????????????????????'yymmdd'),
????????????????????????????'day',
????????????????????????????'NLS_DATE_LANGUAGE = American')) from dual;
????? 返回的長度讓我吃驚:9!
????? 不是我想的6!
????? 于是我在SQL上加了一個TRIM處理
select length(trim(to_char(to_date(to_char(sysdate, 'yy') || '0714', 'yymmdd'),
??????????????????????????????????'day',
??????????????????????????????????'NLS_DATE_LANGUAGE = American')))
???????? from dual;

????? 終于返回了6!
????? 于是羅列了一下英文的周一到周日,正好周三(Wednesday)是9個長!
????? 試了試返回月份的效果,一樣,都是9個長。
????? 試試中文的效果:
????? select lengthb(to_char(to_date('20090707', 'yymmdd'), 'day')) from dual;
? ? ? 返回了6!和英文的長度不同。然后又測試了月
select lengthb(to_char(to_date('20090707', 'yymmdd'), 'month')) from dual;
? ??? 并沒有返回6而是4!就是說,象上句,返回的值是'7月 '還是一個帶有空格的定長!考慮到12月就應(yīng)該有一個空格了 -:)
? ? ? 又和空格糾纏了一把!奇怪ORACLE的返回還是定長。
? ? ? 如果以后在PL/SQL中有這樣的操作一定要多多注意,非常小心,尤其含有地區(qū)或者語言處理的,所以我常常會選擇強制語言再返回信息【'NLS_DATE_LANGUAGE = American'】防止因為程序運行環(huán)境不同而造成返回的信息不同,而使程序運行出錯。
???? -:)
???? -----------------------
???? ORACLE測試環(huán)境:10.2.0.1
???????????????????????????????? 9.2.0.4

? ? ? ? ? ? ????

轉(zhuǎn)載于:https://blog.51cto.com/miracle/88173

總結(jié)

以上是生活随笔為你收集整理的ORACLE TO_CHAR的一个问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。