熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

查找亂碼字符串的SQL

2013-11-13 15:53:34  來源: Oracle 

  昨天系統導數據庫一不小心把nls_language設錯了結果導出來的函數和過程裡面的中文字符串中的字符都變成問號了(?)

  結果業務部門報告好多報表裡面的內容都變成問號了這下麻煩了

  首要問題是要把有這種問題的函數和過程找出來但是系統中的函數和過程有好多啊將近一千個有人說要大家每個人分幾個用眼睛看那可不行啊會累死人的哈哈

  想想辦法吧記得Oracle的函數和過程每行的文本都是存在一個系統表中的而且有問題的函數和過程會有一個特點就是裡面的字符串都變成了???的形式只不過裡面的問號的數量不一定

  那種形式正好可以讓正則表達式發揮作用而且還記得Oracle提供了正則表達式的函數呢

  確定了方向之後說干就干查了一下資料所有的函數和過程都存儲在User_Source這個表中而Oracle還提供了REGEXP_Like函數

  於是就有了下面的SQL

  select distinct name type from user_source where REGEXP_LIKE(text \?{})

  一下子就把有問題的函數和過程名都找出來了哈哈省了不少功夫啊

  總結一下遇到問題的時候不要著急不能依賴手工的工作Oracle中的系統表和內置函數功能很強大要充分利用


From:http://tw.wingwit.com/Article/program/Oracle/201311/17465.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.