zoukankan      html  css  js  c++  java
  • Mysql小技巧(多行数据合并+模糊查询

    1.多行数据合并

    使用GROUP_CONCAT函数后的效果

    需注意:

    1.GROUP_CONCAT()中的值为你要合并的数据的字段名;

     SEPARATOR 函数是用来分隔这些要合并的数据的;

     ' '中是你要用哪个符号来分隔;

    2.必须要用GROUP BY 语句来进行分组管理,不然所有的数据都会被合并成一条记录

    2.模糊查询

    关于条件,SQL提供了四种匹配模式:

    1,% :表示任意0个或多个字符。可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。

    比如 SELECT * FROM [user] WHERE u_name LIKE '%三%'

    将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”等等有“三”的记录全找出来。

    另外,如果需要找出u_name中既有“三”又有“猫”的记录,请使用and条件
    SELECT * FROM [user] WHERE u_name LIKE '%三%' AND u_name LIKE '%猫%'

    若使用 SELECT * FROM [user] WHERE u_name LIKE '%三%猫%'
    虽然能搜索出“三脚猫”,但不能搜索出符合条件的“张猫三”。

    2,_ : 表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:

    比如 SELECT * FROM [user] WHERE u_name LIKE '_三_'
    只找出“唐三藏”这样u_name为三个字且中间一个字是“三”的;

    再比如 SELECT * FROM [user] WHERE u_name LIKE '三__';
    只找出“三脚猫”这样name为三个字且第一个字是“三”的;


    3,[ ] :表示括号内所列字符中的一个(类似正则表达式)。指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。

    比如 SELECT * FROM [user] WHERE u_name LIKE '[张李王]三'
    将找出“张三”、“李三”、“王三”(而不是“张李王三”);

    如 [ ] 内有一系列字符(01234、abcde之类的)则可略写为“0-4”、“a-e”
    SELECT * FROM [user] WHERE u_name LIKE '老[1-9]'
    将找出“老1”、“老2”、……、“老9”;

    4,[^ ] :表示不在括号所列之内的单个字符。其取值和 [] 相同,但它要求所匹配对象为指定字符以外的任一个字符。

    比如 SELECT * FROM [user] WHERE u_name LIKE '[^张李王]三'
    将找出不姓“张”、“李”、“王”的“赵三”、“孙三”等;

    SELECT * FROM [user] WHERE u_name LIKE '老[^1-4]';
    将排除“老1”到“老4”,寻找“老5”、“老6”、……

    5.concat()函数

    在实际的使用中,条件是作为参数传递进来的。 所以我们使用 concat() 函数

    mybatis:        select * from user where name like concat(“%”, #{name},”%”) 

    3.多列数据合成一列

    多列合并成一列,取平均值

    多行合并成一条数据

    4.sql语句中类型转换

    CAST(value as type);
    CONVERT(value, type);

    就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

    可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

    • 二进制,同带binary前缀的效果 : BINARY    
    • 字符型,可带参数 : CHAR()     
    • 日期 : DATE     
    • 时间: TIME     
    • 日期时间型 : DATETIME     
    • 浮点数 : DECIMAL      
    • 整数 : SIGNED     
    • 无符号整数 : UNSIGNED 

     5.DATE_SUB() 函数从日期减去指定的时间间隔

    语法

    DATE_SUB(date,INTERVAL expr type)

    date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。

    type 参数可以是下列值:

    Type 值
    MICROSECOND(微秒)
    SECOND(秒)
    MINUTE(分)
    HOUR(小时)
    DAY(天数)
    WEEK(周)
    MONTH(月)
    QUARTER(季度)
    YEAR(年)
    SECOND_MICROSECOND
    MINUTE_MICROSECOND
    MINUTE_SECOND
    HOUR_MICROSECOND
    HOUR_SECOND
    HOUR_MINUTE
    DAY_MICROSECOND
    DAY_SECOND
    DAY_MINUTE
    DAY_HOUR
    YEAR_MONTH

    实例:

    1.昨天数据

    2.30天前到今天的数据

    3.90天前到今天的数据

    DATE( now() ) 把时间格式化成  2016-01-12

    6.获取当前时间函数

    select now();//获得当前时间  格式:2016-01-12 23:21:33
    select curdate();//获得当前时间  格式: 2016-01-12
    select curtime();//获得当前时间  格式:23:19:43

    7.QUARTER函数

    获取本季度的数据 

    获取上一季度数据

    获取本年数据 

    select * from 表名 where YEAR(时间字段名)=YEAR(NOW());

    获取上一年数据。。。

    8.空值替换为0

    IFNULL(expr1,expr2) 函数

  • 相关阅读:
    mysql怎么导入大文件的sql文件
    php函数研究
    php实现实现代码多主从,切换,轮询,健康检查
    php实现单个用户禁止重复登录,防止同一用户同时登陆
    php使用p3p实现cookies跨域设置 实现单点登录,全站登录
    实现页面浏览统计
    遍历目录删除指定MD5值的文件
    boot.img的修改
    “逃离大厦”游戏的破解
    Android漏洞——将Android恶意代码隐藏在图片中
  • 原文地址:https://www.cnblogs.com/mikemhm/p/11383446.html
Copyright © 2011-2022 走看看