您的位置:首页
模糊搜索:concat各种函数详解、like操作符、通配符
2017-09-22 18:28
399 查看
if(StringUtils.isNotBlank(queryBean.getConditions())){ hqlBuilder.addWhereClause(" concat(this.user.name,this.ip,this.mac,this.name,this.organization.name) like ? ", "%"+queryBean.getConditions()+"%"); }
一、LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
语法:SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;
通过使用 NOT 关键字,您可以选取不匹配模式的记录。
SELECT * FROM Websites WHERE name LIKE 'G%'; //选取 name 以字母 "G" 开始的所有客户 SELECT * FROM Websites WHERE name LIKE '%k'; //选取 name 以字母 "k" 结尾的所有客户 SELECT * FROM Websites WHERE name LIKE '%oo%'; //选取 name 包含模式 "oo" 的所有客户 SELECT * FROM Websites WHERE name NOT LIKE '%oo%'; //选取 name 不包含模式 "oo" 的所有客户
二、CONCAT()函数用于将多个字符串连接成一个字符串,是最重要的mysql函数之一,下面就将为您详细介绍mysql CONCAT()函数:
1、mysql CONCAT(str1,str2,…)
返回结果为连接参数产生的字符串。
如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。(所以上面写法是有问题的,如果库里某个项为null,那么模糊查询时,concat的结果都将是null,需要用到下面介绍的concat_ws()比较好)
如果所有参数均为非二进制字符串,则结果为非二进制字符串。
如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;
若要避免这种情况,可使用显式类型 cast,例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)
mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’); // ‘MySQL’ mysql> SELECT CONCAT(’My’, NULL, ‘QL’); // NULL mysql> SELECT CONCAT(14.3); // ‘14.3′
2、mysql CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。
如果分隔符为 NULL,则结果为 NULL。
函数会忽略任何分隔符参数后的 NULL 值。这是和MySQL中concat函数不同的地方、concat_ws函数在执行的时候,不会因为NULL值而返回NULL。(这点很重要)
mysql> SELECT CONCAT_WS(’,',’First name’,'Second name’,'Last Name’); // ‘First name,Second name,Last Name’ mysql> SELECT CONCAT_WS(’,',’First name’,NULL,’Last Name’); // ‘First name,Last Name’ //mysql CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
3、group_concat函数
完整的语法如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])(分隔符默认逗号)
基本查询:
mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 | 10| |1 | 20| |1 | 20| |2 | 20| |3 | 200 | |3 | 500 | +------+------+ 6 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔(默认)
mysql> select id,group_concat(name) from aa group by id; +------+--------------------+ | id| group_concat(name) | +------+--------------------+ |1 | 10,20,20| |2 | 20 | |3 | 200,500| +------+--------------------+ 3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,分号分隔
mysql> select id,group_concat(name separator ';') from aa group by id; +------+----------------------------------+ | id| group_concat(name separator ';') | +------+----------------------------------+ |1 | 10;20;20 | |2 | 20| |3 | 200;500 | +------+----------------------------------+ 3 rows in set (0.00 sec)
以id分组,把去冗余的name字段的值打印在一行,逗号分隔
mysql> select id,group_concat(distinct name) from aa group by id; +------+-----------------------------+ | id| group_concat(distinct name) | +------+-----------------------------+ |1 | 10,20| |2 | 20 | |3 | 200,500 | +------+-----------------------------+ 3 rows in set (0.00 sec)
以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序
mysql> select id,group_concat(name order by name desc) from aa group by id; +------+---------------------------------------+ | id| group_concat(name order by name desc) | +------+---------------------------------------+ |1 | 20,20,10 | |2 | 20| |3 | 500,200| +------+---------------------------------------+ 3 rows in set (0.00 sec)
4、repeat()函数
用来复制字符串,如下'ab'表示要复制的字符串,2表示复制的份数
mysql> select repeat('ab',2); +----------------+ | repeat('ab',2) | +----------------+ | abab | +----------------+ 1 row in set (0.00 sec)
相关文章推荐
- MyBatis like 模糊查询,CONCAT 函数用法
- oracle sql语言模糊查询--通配符like的使用教程详解
- Mysql中模糊检索——利用通配符(%、_)及LIKE操作符(谓词)
- sql搜索like通配符的用法详解
- mysql之group_concat函数详解
- PostgreSQL教程(五):函数和操作符详解(1)
- 各种钩子函数详解
- JAVA jdbc 用LIKE模糊搜索内容——prepareStatement LIKE语句
- 【走马观花】SQL SERVER 2012 新增函数详解-01.字符串函数CONCAT
- SQL SERVER2012中新增函数之字符串函数CONCAT详解
- MySql模糊查询like通配符与使用正则查询详细介绍
- Matlab中pdist 函数详解(各种距离的生成)
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- thinkphp的各种内部函数 D()、F()、S()、C()、L()、A()、I()详解
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- MySql like模糊查询通配符使用详细介绍
- 〔转〕Word域的应用和详解1:域基础 通用域开关 表格 操作符和函数 编号域
- Delphi模糊查询[ POS函数和Like SQL语句 ]使用方法
- group_concat函数详解
- Matlab中pdist 函数详解(各种距离的生成)