Android数据库使用的是sqlite3,有时会有模糊查询的需求,比如包含“12345”的SQL查询语句为:
select * from Table where title like "%12345%"
模糊查询使用like关键字,%通配符表达0个或多个字符在当前位置,如果查询的内容刚好含有转义字符怎么办?一般是使用escape关键指定转义符,然后将查询内容的转义符做转义,但android里面有个地方需要特别注意一下:sqlite在保存有转义字符的数据到数据库时会自动做一次转,比如:
字符串
"111/222"
保存在数据库的结果是"111\/222"
,
"http://www.baidu.com"
会保存成"http:\/\/www.baidu.com"
转义符/会被保存成/,所在在查询的时候,不能简单想当然的把/转成//,应该转成/,示例:
select * from Table where title like "%111\\//222" escape '/'