查詢亂碼字串的SQL

2021-05-07 11:24:19 字數 694 閱讀 8992

昨天系統導資料庫,一不小心把nls_language設錯了,結果匯出來的函式和過程裡面的中文字串中的字元都變成問號了(?)。

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

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

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

那種形式正好可以讓正規表示式發揮作用,而且還記得oracle提供了正規表示式的函式呢。

確定了方向之後,說幹就幹,查了一下資料,所有的函式和過程都儲存在user_source這個表中。而oracle還提供了regexp_like函式。

於是就有了下面的sql:

select

distinct

name

, type

from

user_source

where

regexp_like(text,

'''/?'''

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

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

查詢亂碼字串的SQL

昨天系統導資料庫,一不小心把nls language設錯了,結果匯出來的函式和過程裡面的中文字串中的字元都變成問號了 結果業務部門報告,好多報表裡面的內容都變成問號了,這下麻煩了。首要問題,是要把有這種問題的函式和過程找出來,但是系統中的函式和過程有好多啊,將近一千個,有人說要大家每個人分幾個,用眼...

解碼字串

表示式s,只包含數字字母以及方括號,該表示式有如下規則 數字只會出現在方括號之前,它表示方括號裡內容的重複次數 按上述規則展開字串 示例1 e3 2 abc gh eabcabcghabcabcghabcabcgh 示例2e9 xyz exyzxyzxyzxyzxyzxyzxyzxyzxyz 示例3...

sql字串查詢

查詢特定格式的字元 例如 查詢姓李的學生 select from student where sname like 李 如果是查詢姓李或李兩個字或三個字的名稱 select from student where left sname,1 in 李 張 andlen sname 3and len sn...