Mybatis中模糊查询的各种写法

工作中用到,写三种用法吧,第四种为大小写匹配查询


1. sql中字符串拼接
   SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT('%', #{text}), '%');
 
2. 使用 ${...} 代替 #{...}
   SELECT * FROM tableName WHERE name LIKE '%${text}%';

3. 程序中拼接

   Java

   // String searchText = "%" + text + "%";
   String searchText = new StringBuilder("%").append(text).append("%").toString();
   parameterMap.put("text", searchText);


   SqlMap.xml

   SELECT * FROM tableName WHERE name LIKE #{text};


4. 大小写匹配查询
   SELECT *  FROM TABLENAME  WHERE UPPER(SUBSYSTEM) LIKE '%' || UPPER('jz') || '%'
   或者 

   SELECT *   FROM TABLENAME  WHERE LOWER(SUBSYSTEM) LIKE '%' || LOWER('jz') || '%'


使用SQL 通配符可以替代一个或多个字符,即模糊查询。

SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符如下:

1、%    替代一个或多个字符    

2、_    仅替代一个字符    

3、[charlist]    字符列中的任何单一字符    

4、[^charlist]或者[!charlist] 不在字符列中的任何单一字符

以图中表格为例,说明一下各通配符用法

1、 查询居住在以 "Ne" 开始的城市里的人:

SELECT * FROM Persons WHERE City LIKE 'Ne%'

2、查询居住在包含 "lond" 的城市里的人:

SELECT * FROM Persons WHERE City LIKE '%lond%'

3、查询名字的第一个字符之后是 "eorge" 的人:

SELECT * FROM Persons WHERE FirstName LIKE '_eorge'

4、查询记录的姓氏以 "C" 开头,然后是一个任意字符,然后是 "r",然后是任意字符,然后是 "er":

SELECT * FROM Persons WHERE LastName LIKE 'C_r_er'

5、查询居住的城市以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

6、查询居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'


他的博客蛮好的   www.cnblogs.com/zhming26/


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页