程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> 關於ASP編程 >> ASP在ACCESS中模糊查詢內存溢出的解決方法

ASP在ACCESS中模糊查詢內存溢出的解決方法

編輯:關於ASP編程

今天在日常維護一個網站時,發現該網站的留言程序沒有經過嚴格的驗證過濾,導致了將近十萬條垃圾數據。而其中又不乏重要信息,需要清理數據,以及增加更為嚴格的驗證措施。

而通過在數據庫中直接刪除又不太科學,會誤刪很多重要信息。

通過 模糊查詢語句:
復制代碼 代碼如下:
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")&%'

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved