今天在日常維護一個網站時,發現該網站的留言程式沒有經過嚴格的驗證過濾,導致了將近十萬條垃圾資料。而其中又不乏重要資訊,需要清理資料,以及增加更為嚴格的驗證措施。
而通過在資料庫中直接刪除又不太科學,會誤刪很多重要資訊。
通過 模糊查詢語句:
select * from Feedback where Comments like '%HTTP%'
結果: 「記憶體溢出」
經過不斷的搜索,找出了問題的主要原因:

 

asp 中用 LIKE 關鍵字查詢日文符號就會出錯,比如說Chr(-23075),提示記憶體溢出。

 

如果資料表中的資料包含日文或者一些特殊非簡體漢字元號,也會出現記憶體溢出的錯誤。
而網上說,上述問題已經得到微軟動力營的微軟工程師確認,為產品的 BUG,無法解決。唯一的辦法就是將整個資料庫中的資料編碼為ANSI 文本格式,然後保存。顯示的時候再DECODE。
無解,只有按上面所說,進列欄位轉換保存到另外一個新欄位中,然後再進行清理操作。面對這個超標資料真是困難。
EncodeString 函數進行字元轉義
Function EncodeString(strWords)

 

Dim i As Long

 

Dim strEncodeWords

 

For i = 1 To Len(strWords)

 

strEncodeWords = strEncodeWords & CStr(Asc(Mid(strWords, i, 1))) & ","

 

Next
EncodeString = strEncodeWords
End Function
這樣經過轉義後,在模糊搜索時,將關鍵字進行轉義一下
delete * from Feedback where Comments_new like '%&EncodeString("HTTP")&%'
痛苦,不太瞭解這網站的程式是誰寫的,太不負責了。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()