首页 > 编程知识 正文

oracle判断含有特殊字符,oracle如何查询特殊字符

时间:2023-05-03 11:49:36 阅读:21824 作者:382

最近在写刁钻层的时候,有问题。 使用like进行模糊搜索时,输入下划线,无法准确查询数据,返回所有数据。

这是出于好奇,在百度之后发现的。 因为本来有些特殊字符必须转义才能查询。

请先理解什么是特殊字符。

在ascii代码表中,特殊字符的范围如下: 即32~47 58~64 91~96 123~126。

模糊查询时,转换有两种方法。

使用REGEXP_LIKE方法。 这是一种使用正则表达式进行查询的方法,因此如果存在此字符(如$ * ),则必须进行转义才能进行查询。 因为转义字符是反斜杠,所以反斜杠也会旋转。 这里只讨论文字中包含字符串的情况,不讨论正则表达式的匹配。

使用like关键字根据escape关键字进行转义。

字符匹配操作可以使用通配符“%”和“_”。

% :表示任意字符,包含零个;

_ :表示任意字符; 上面输入下划线会检测到所有内容,因为如果有任何一个字符,就会被检查。

此外,对于单引号,在oracle中,like语句中的'与前面的单引号匹配,例如select * fromtabletestwheret.name like ' % ' % ' escape '' 使用转义符号不会正常结束。 必须将单个单引号转换为两个单引号: select * fromtabletesttwheret.name like ' % ' % ' escape ''

因此,上面的两个字符和用于转义的字符(通常使用反斜杠)必须转义。

那么,问题还在于,在Java代码中,如果使用JDBC的预编译语句进行预编译,不是就不用转义了吗?

just do it!

答案是否定的,还是需要逃脱? 注意,以下没有进行逃脱,所检测的结果仍然是所有记录。

逃跑的话会变得准确。

也请注意两点:

1. jdbc自动加单引号。 分配值时不需要添加单引号

2. jdbc自动将一个单引号转换为两个。 分配值时不需要写两个单引号

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。