隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 826741
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          幫財務人員處理數(shù)據(jù),一個是ERP系統(tǒng)中的賬面數(shù)據(jù),一個是稅務局給的官方數(shù)據(jù),一張EXCEL表,想找出兩邊不匹配的數(shù)據(jù)。

              據(jù)說EXCEL2007版本已經(jīng)提供了這種比對的功能,但無奈數(shù)據(jù)量太大,操作起來巨慢如牛,而WPS2009似乎還沒這個功能,于是導入數(shù)據(jù)庫中新建一個表存儲這些數(shù)據(jù)來比對。

              開始寫了個SQL來查詢稅務有而ERP系統(tǒng)中沒有的數(shù)據(jù):

              select * from tab_excel where taxcode not in

              (select erpcode from tab_excel)

              正常,然后反過來查ERP中存在而稅務系統(tǒng)中不存在的數(shù)據(jù):

              select * from tab_excel where erpcode not in

              (select taxcode from tab_excel)

              返回0條數(shù)據(jù),很奇怪,然后馬上想到了是null的問題,taxcode必然存在值為null的記錄,oracle中和null比較的返回值是unkown,所以才無法匹配。

              于是修改SQL語句如下:

              select * from tab_excel tout where not exists

              (select 1 from tab_excel where taxcode=tout.erpcode)

              結果正常。

              not in (...) 括號中的返回值不能存在null值,是Oracle SQL開發(fā)的一條鐵律,如果不能確定返回結果一定無null值,還是改寫為not esists吧。而且not in效率低下,一般不能用到索引,生產(chǎn)環(huán)境的程序最好不要使用。



          posted on 2009-10-20 16:05 Ke 閱讀(264) 評論(0)  編輯  收藏 所屬分類: oracle
          主站蜘蛛池模板: 油尖旺区| 望江县| 揭西县| 锡林郭勒盟| 靖西县| 新丰县| 如皋市| 金阳县| 永和县| 广水市| 吴旗县| 朝阳市| 甘洛县| 专栏| 玉田县| 新宁县| 桃江县| 石河子市| 侯马市| 江山市| 喀喇沁旗| 宜兴市| 孙吴县| 土默特右旗| 富阳市| 农安县| 怀柔区| 隆化县| 五家渠市| 峨眉山市| 许昌市| 巴楚县| 娄底市| 柏乡县| 全州县| 宁武县| 江都市| 十堰市| 巴青县| 同德县| 广水市|