like 查詢中含有特殊字符 和 ” 時的問題
當 like 查詢中含有特殊字符 和 ” 時,可能會出現查詢不到結果的問題。
問題描述
以數據庫中一個存儲 json 字符串的字段為例,需要查詢該字段中 totalcount 屬性值為 true 的數據。
- 以下查詢可以返回結果:
select * from task where column_a like ‘%”totalcount%’ - 但以下查詢卻無法返回結果:
select * from task where column_a like ‘%”totalcount”%’
原因分析
反斜杠()是 sql 中的轉義字符,用于轉義具有特殊含義的字符,使其能夠表示原本的含義。因此,當 like 中包含反斜杠時,需要對反斜杠進行再次轉義才能正確解析。另外,雙引號(”)也是 sql 中的特殊字符,需要進行轉義才能正常使用。
解決方案
要解決此問題,需要對反斜杠和雙引號進行轉義,可以使用以下方式:
- 對反斜杠轉義: 或者
- 對雙引號轉義:”
因此,正確的查詢語句可以寫成:
SELECT * from task where column_a LIKE '%\"totalCount\":false%'
登錄后復制
其中,反斜杠被轉義了兩次,雙引號也被轉義。