ASP在ACCESS中模糊查詢"記憶體溢出"的解決方案_應用技巧

來源:互聯網
上載者:User

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

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

通過 模糊查詢語句:

複製代碼 代碼如下:

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")&%'

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.