- 当前数据
- 查询已a_开头的name,
SELECT * FROM
testwhere name like 'a_%'
,表面看 是没有问题的,输出结果却是已a开头的数据
- 针对这种含有特殊字符的查询,我们需要转义一下
- 解决
-
String name="a_"; name = name.replaceAll("_", "\\\\_"); sql.append(" and name like '%"+name+"%' ");
-
String name="a_"; name = name.replaceAll("_", "/_"); sql.append(" and name like '%"+name+"%' escape '/'");
-
- 对于oracle
- 使用转义符号
select * from liketesttable where forms like 'hello/_%' escape '/'
select * from liketesttable where regexp_like(forms,'hello[_]')
select * from liketesttable where forms like 'hello'||chr(37)||'%'
单引号chr(39),双引号(34)其他符号可以通过select ascii('_') from dual;
查询到,此方法不适用查询’%’
- 使用转义符号
- mysql已知需要转义特殊符号
',\,%,_
,oracle已知需要转义特殊符号在mysql的基础上还有’&’,这个符号在查询是可以正常查询,但插入是直接插入是插入不进入的 - 参考:
数据库查询含有特殊字符
最新推荐文章于 2023-07-03 18:00:09 发布