.net mysql 特殊字符转义字符_MySQL 特殊字符转义问题
模糊查詢時,很多特殊字符都是有特定意義的,比如%、_等,這些在模糊查詢中都是通配符。
如果用戶在前端的輸入是沒有限制的,那么,一旦輸入相關特殊字符,就會獲得錯誤的查詢結果,出于需求的細致要求,這個問題是需要解決的。
在網上找了很多資料,發現能夠完全把這個問題解決的答案很少或者很多都不完整,自己在找資料解決問題后,發一下我認為交優的解決辦法吧。
如果持久化框架使用的是MyBatis,那么直接使用一下代碼即可:
SELECT * FROM table_name
WHERE clo LIKE CONCAT ('%/',#{testClo},'%') ESCAPE '/'
首先,在數據庫中的轉義字符通常是反斜杠“\”,并且只有緊挨著的字符會被轉義,比如說:"\%",這里的%被轉義成普通字符而不是通配符,但是如果"\電%",這個%還是通配符。
其次,escape 用于定義轉義字符,這里將斜杠"/"定義成轉義符。
最后,因為MyBatis是直接把testClo中的內容傳遞過來的,所以前面的“/”會把testClo中所有的特殊字符都轉義成普通字符而不管中間是否有其他字符串隔開。
這樣就可以實現無論前端輸了什么東西進來,都不會再有特殊字符導致錯誤的問題了。
值得注意的是:這是框架級的代碼而不是數據庫級的代碼,也就是說,如果你直接在數據庫中這樣寫,是不行的。或者說,這是MyBatis支持的一種方法。
總結
以上是生活随笔為你收集整理的.net mysql 特殊字符转义字符_MySQL 特殊字符转义问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql alert table 日志
- 下一篇: javascript/jquery高度宽