關於MySQL中的通配符'_'


背景:今天在做系統測試的時候,需要按照名稱對資源進行過濾。系統中三個資源的名稱分別為:vm_wang、wq、vm2

當輸入'_'的時候,理想結果為vm_wang,但是實際情況是全部都過濾出來。

原因分析:

查了下《MySQL必知必會》這本書,發現'_'屬於通配符。它的功能是匹配單個字符。

所以當我輸入‘_’的時候,實際執行的sql為 select * from table_name where table_column_name like '%_%'

‘%’通配符的功能是任何字符出現任何次數。所以上述sql的功能就是只要名稱中包含一個字符就可以過濾出。

當我輸入‘___’三個下划線的時候,實際執行的sql為 select * from table_name where table_column_name like '%___%'

過濾的結果為:vm_wang、vm2。因為三個下划線表示名稱至少包含3個字符,所以wq被過濾掉了。

解決方法

我們傳入的下划線被MySQL默認當成通配符處理了,為了避免這種情況,必須對下划線進行通配符處理,如下所示:

select * from table_name where table_column_name like '%\_%'

查詢結果:vm_wang


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM