like 查詢中含有特殊字符 和 ” 時的問題
當 like 查詢中含有特殊字符 和 ” 時,可能會出現(xiàn)查詢不到結(jié)果的問題。
問題描述
以數(shù)據(jù)庫中一個存儲 json 字符串的字段為例,需要查詢該字段中 totalcount 屬性值為 true 的數(shù)據(jù)。
- 以下查詢可以返回結(jié)果:
select * from task where column_a like ‘%”totalcount%’ - 但以下查詢卻無法返回結(jié)果:
select * from task where column_a like ‘%”totalcount”%’
原因分析
反斜杠()是 sql 中的轉(zhuǎn)義字符,用于轉(zhuǎn)義具有特殊含義的字符,使其能夠表示原本的含義。因此,當 like 中包含反斜杠時,需要對反斜杠進行再次轉(zhuǎn)義才能正確解析。另外,雙引號(”)也是 sql 中的特殊字符,需要進行轉(zhuǎn)義才能正常使用。
解決方案
要解決此問題,需要對反斜杠和雙引號進行轉(zhuǎn)義,可以使用以下方式:
- 對反斜杠轉(zhuǎn)義: 或者
- 對雙引號轉(zhuǎn)義:”
因此,正確的查詢語句可以寫成:
SELECT * from task where column_a LIKE '%\"totalCount\":false%'
其中,反斜杠被轉(zhuǎn)義了兩次,雙引號也被轉(zhuǎn)義。
? 版權(quán)聲明
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載。
THE END