模糊查询

SQL查询系列之六:SQL模糊查询

倾然丶 夕夏残阳落幕 提交于 2020-12-16 23:35:09
在 SQL 结构化查询语言中, LIKE 语句有着至关重要的作用。 LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 语法格式是: select * from 表名 where 字段名 like 模式字符串 它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索和模式字符串对应的子串。下面就模式字符串最常用的两个通配符举例说明: Ø % 是用于与包含0个或多个字符的字符串匹配 Ø _是用于与包含1个字符的字符串匹配 示例: 显示emp表中姓名以字符”A”开头的所有员工信息。 SQL> SELECT * FROM emp WHERE ename LIKE 'A%'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30 7876 ADAMS CLERK 7788 1987/5/23 1100.00 20 示例: 显示emp表中姓名包含字符”A”的所有员工信息。 SQL> SELECT * FROM emp WHERE ename LIKE '%A%'; EMPNO ENAME JOB

MyBatisGenerator工具生成的类与XML对Oracle数据库模糊查询的支持

Deadly 提交于 2019-12-18 18:19:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> MyBatis Generator 工具可以用来生成一些工具类和XML模板,用于为用户使用Java语言访问数据库提供便利。 我使用的数据库版本为Oracle11g,JDK版本为1.8。 建表语句如下: CREATE TABLE PERSON_INFO ( ID NUMBER(12, 0) PRIMARY KEY, NAME VARCHAR(50), COMPANY VARCHAR(200) ); INSERT INTO PERSON_INFO (ID, NAME, COMPANY) VALUES (1, 'Tsybius', 'Dog Head Inc'); INSERT INTO PERSON_INFO (ID, NAME, COMPANY) VALUES (2, 'Galatea', 'Dog Head Inc'); INSERT INTO PERSON_INFO (ID, NAME, COMPANY) VALUES (3, 'Quintus', 'Dog Head Inc'); INSERT INTO PERSON_INFO (ID, NAME, COMPANY) VALUES (4, 'Gaius', 'State Grid Corporation of Mars'); INSERT INTO

SQL模糊查询通配符_和%处理

♀尐吖头ヾ 提交于 2019-12-05 07:53:26
下划线和百分号在sql模糊查询like语句中为特殊字符,分别可匹配1个字符和0到多个字符,如果需要真正查询特殊字符得转义,如like 'a\_b%' escape '\',将匹配前3个字符为a_b的所有记录。 1 、PreparedStatement处理 普遍做法,拼sql时使用like ?,左模糊在查询条件字符串左侧添加%,右模糊在查询条件字符串右侧添加%,对特殊字符进行预先转义 condition = condition.replaceAll("_", "\\\\_"); condition = condition.replaceAll("%", "\\\\%"); ps.setString(idx, "%" + conditon + "%") ; 为什么replaceAll中需要使用4个\可参考jdk源码Matcher.appendReplacement方法。 专业做法,拼sql时使用like ? escape '\'(java中使用两个\\) 2 、多数据库支持处理 在postgres中escape需要使用'\\'(java中使用四个\\)处理 3 、其他思考 查找数据库是否有配置模糊查询的默认转义字符,搜索未果,可能关键字抽取有问题,试图在oracle的v$parameter中查找会话相关参数但是没有收获。 建议处理方式:在sql中like后添加escape