MySQL函数

1.MyBatis实现模糊查询

1.${…}代替#{…}
2.把’%#{name}%’改为”%”#{name}”%”
3.使用sql中的字符串拼接函数
4.使用标签bind

<select id="selectPersons" resultType-"person" parameterType="person">
    <bind name="pattern" value=" '%' + _parameter.username + '%' "/>
    select id, sex, age, username, password from person where username LIKE #{pattern}
</select>

参考:
MyBatis实现模糊查询的几种方式
SQL Count(*)函数,GROUP_By,Having的联合使用


2. group_concat函数

用法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

group_concat长度限制

mysql中group_concat函数对此函数的处理结果字符串长度是有限制的,默认为1024;所以如果结果字符串太长的话,就会在数据库里被截取,因此没有显示全部数据。

解决方法:
1、SET GLOBAL group_concat_max_len = 102400; //其中数字大小可修改
注意:该方法缺点是重启服务后设置失效

2、在MySQL配置文件(my.ini)中加:
group_concat_max_len = -1 # -1为最大值或填入你要的最大长度
并重启mysql


3. order_by函数

  • order by id desc, time desc
    首先按id降序排列(优先),如果id字段一样,再按time降序排列(前提是满足id降序排列)

  • order by name, age desc
    name优先,name一样的话,就按age排序。后面再加第三列的话一样,以此类推下去

order by 几种排序的写法

1.单例升序

select <column_name> from <table_name> order by <column_name>;(默认排序,即不写ASC)

2.单列降序

select <column_name> from <table_name> order by <column_name> desc;

3.多列升序

select <column_one>, <column_two> from <table_name> order by <column_one>,<column_two>;

4.多列升序

select <column_one>, <column_two> from <table_name> order by <column_one>,<column_two> desc;

5.多列混合排序

select <column_one>, <column_two> from <table_name> order by <column_one> desc, <column_two> asc;
原文地址:https://www.cnblogs.com/liaoguanwang/p/9986796.html