查找乱码字符串的SQL
生活随笔
收集整理的這篇文章主要介紹了
查找乱码字符串的SQL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天系統導數據庫,一不小心把nls_language設錯了,結果導出來的函數和過程里面的中文字符串中的字符都變成問號了(?)。
結果業務部門報告,好多報表里面的內容都變成問號了,這下麻煩了。
首要問題,是要把有這種問題的函數和過程找出來,但是系統中的函數和過程有好多啊,將近一千個,有人說要大家每個人分幾個,用眼睛看,那可不行啊,會累死人的,哈哈。
想想辦法吧,記得Oracle的函數和過程每行的文本都是存在一個系統表中的,而且,有問題的函數和過程會有一個特點,就是里面的字符串都變成了'???'的形式,只不過里面的問號的數量不一定。
那種形式正好可以讓正則表達式發揮作用,而且還記得Oracle提供了正則表達式的函數呢。
確定了方向之后,說干就干,查了一下資料,所有的函數和過程都存儲在User_Source這個表中。而Oracle還提供了REGEXP_Like函數。
于是就有了下面的SQL:
select distinct name, type from user_source where REGEXP_LIKE(text, '''\?{1,1000}''')
一下子就把有問題的函數和過程名都找出來了。哈哈,省了不少功夫啊。
總結一下,遇到問題的時候不要著急,不能依賴手工的工作。Oracle中的系統表和內置函數功能很強大,要充分利用。
總結
以上是生活随笔為你收集整理的查找乱码字符串的SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-3-18
- 下一篇: linux cmake编译源码,linu