如果你手头的某个项目或产品有模糊搜索的功能,建议你做个测试:
在搜索框中输入:“_”(下划线)或者“%”(百分号),然后进行搜索,看看会得到什么结果。
如果你的搜索结果与预期一致,即只搜到含“_”或“%”的结果,那么恭喜你,你没有掉到这个陷阱中去,尽管你自己可能根本没意识到为什么。
如果你的搜索结果出现了很多根本不含任何“_”或“%”的结果,那说明你跟我一样,根本就没考虑过这个问题,这也正是本文要解决的问题。
其实这个问题说也简单,因为我们绝大多数搜索都是基于SQL的,其中的模糊搜索应该大多数人都知道,就是:
LIKE %XX%,其中%代表任意长度的字符串,跟我们常用的通配符“*”作用类似。除了"%"比较常用外,还有一个可能很多人不知道的通配符:“_”,
其作用跟常见的通配符“?”作用类似。基于以上原因,如果你不做任何处理,直接搜索包含着两个特殊字符的关键词是不可能得到正确结果的。
例如,如果直接输入%或_搜索,得到的是所有结果集合。
难道就没有办法搜索这种特殊字符吗?办法当然是有的,那就是用‘escape’这个鲜为人知的关键词,
例如可以用下面的语句:
Sql代码
1.Select * from demo_table where keyword like '^%' escape '^' ;
这里'^'本来是个普通字符,但经过escape之后,它就变成了一个转义符,在它之后的%就被它转义为一个普通字符了。这样就可以进行对特殊字符的查询了。
也许有人会说,我根本没有考虑过这个问题,但我的系统能够正常查询,这是为什么呢?
这是因为你依赖的后台系统已经替你考虑了。比如hibernate的criteria已经对此作了特殊封装,有兴趣的可以看看它的LikeExpression类是如何处理的。
而如果你用的不是hibernate,则需要自己亲自处理这个问题了。
分享到:
相关推荐
在Oracle数据库管理中,有时我们需要处理包含特殊字符的数据,这些特殊字符可能会影响到数据的正常读取、处理或存储。本文将详细介绍如何在Oracle中去除特殊字符,并通过实例代码进行演示。 首先,我们要明白什么是...
通过上述示例可以看出,在Oracle中利用`REGEXP_SUBSTR`函数可以非常灵活地处理字符串,尤其是对于包含特殊符号(如逗号、冒号等)的字符串,能够轻松地提取所需的子字符串。这对于数据处理、报表生成等应用场景具有...
- **错误原因**:当尝试将一个字符型字段转换为数字时,如果该字段包含的不是有效的数值文字(如包含了字母、特殊符号等非数字字符),则会导致此错误。 - **解决方法**:需要检查涉及到的字符字段,确保它们只包含...
在Oracle数据库中,有时我们需要插入包含特殊字符的数据,如URL中的`&`和文本中的单引号`'`。这些字符在SQL语句中具有特定含义,因此直接插入可能会导致语法错误或解析问题。本文将详细介绍如何处理和插入这些特殊...
Oracle数据库系统支持多种字符集,以适应不同地区的语言和特殊字符需求。字符集定义了数据库如何存储和处理字符,对于多语言环境尤其重要。在Oracle中,常见的字符集包括ISO8859(如WE8ISO8859P1)、GB2312以及GBK等...
- **字符集识别**:Oracle数据库支持多种字符集,如AL32UTF8、WE8ISO8859P1等,不同的字符集用于支持不同语言和特殊字符。在导入导出过程中,确保源和目标数据库的字符集兼容至关重要,否则可能导致乱码。 - **字符...
在Oracle数据库中,进行字符串查询时,特别是当字符串中包含逗号等特殊字符时,我们需要巧妙地使用SQL的LIKE操作符来实现精确匹配。这里,我们面对的问题是想要查询DWDH字段中含有"飞信"但不包含"移动飞信"或"飞信...
在Oracle数据库中,经常需要对存储的数据进行处理,比如根据特定字符进行截取。这篇博客“一个oracle根据特定字符截取数据”分享了一个实用的方法,适用于那些需要从字符串字段中提取部分信息的情况。通过SQL查询,...
在Oracle数据库中,排序字符串时,如果字符串内包含数字或特殊符号,可能会导致不期望的排序结果。这是因为Oracle默认按照字典顺序(ASCII值)排序,数字的ASCII值小于大多数字母,因此“1”会排在“2”之前,但也会...
本篇文章将深入探讨一些非常实用的Oracle特殊函数,这些函数在日常的数据库操作中有着广泛的应用。 1. **SYSDATE** 函数: - `SYSDATE` 是一个内置函数,用于获取当前系统日期和时间。例如,当你需要记录某个操作...
在Oracle数据库中,字符集主要用于确保数据能够正确地存储、检索和处理。了解数据库的字符集对于确保数据的一致性和准确性至关重要。以下是查看Oracle数据库字符集的几种方法: 1. **查看数据库服务器字符集** - ...
在IT行业中,数据库管理和编程语言的交互是常见的工作场景,特别是在处理特殊数据类型时,如emoji表情。Oracle数据库系统在设计之初...在实际项目中,务必测试各种情况,确保所有设备和平台都能正确处理这些特殊字符。
在使用Oracle XE时,有时我们可能需要修改数据库的字符集以支持不同的语言或特殊字符。此外,随着应用程序的发展,升级Oracle Application Express (APEX)到最新版本也是必要的,以获取更多的功能和安全性更新。以下...
在创建或更新表、插入数据、更新数据或执行其他数据库操作时,我们有时需要确保输入的数据不包含任何非法或特殊字符,以避免引发错误或破坏数据的完整性。本话题将深入探讨如何在Oracle存储过程中检查和处理非法字符...
今天碰到一个比较奇怪的问题: 在客户端上使用sqlplus用普通用户可以... 本来以为客户端是32位的缘故,就在oracle服务器上用sqlplus登录,也还是一样 SQL> conn system@webdata Enter password: ERROR: ORA-12541: TNS
在IT领域,尤其是在数据库管理、编程、文本处理等环节,特殊字符可能会引发各种问题,如数据格式错误、程序执行异常、安全风险等。因此,进行特殊字符检测是保证数据安全性和系统稳定性的关键步骤。 描述中的“可以...
Oracle数据库的字符集决定了它能支持哪些字符,升级字符集可以扩大对特殊字符的支持范围。他们对数据库字符集升级过程进行了全面测试,确保了升级的安全性和稳定性,并在实际工作中实施,解决了汉字生僻字乱码的问题...