mybatis sql语句集合

获取数据库中某个varchar字段的最大值

max(CONVERT(stat_date,UNSIGNED))

日期格式转换

DATE_FORMAT(update_time,‘%Y-%m-%d %T’)

字符串拼接

concat(#{year},‘Y’)

查询年份的当前年份的后面一年

DATE_FORMAT(DATE_SUB(CURDATE(),interval -1 year),‘%Y’)

查询获取当前年份

DATE_FORMAT(CURDATE(),‘%Y’)

left,right函数返回args最左边、右边的length个字符串,

right(args, 2)

当前日期的前三个月日期

pay_time <![CDATA[<]]> now() - INTERVAL 3 MONTH AND now()

截取某一个字段中以某个字符开始截取

  • 以从后面开始第一个横杠为分割截取

SUBSTRING_INDEX( dep_name, ‘-’,- 1 ) depName

  • 以第一个横杠为分割截取

SUBSTRING_INDEX( dep_name, ‘-’,1 ) depName

  • IFNULL() 函数

IFNULL(expression, alt_value)
如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值。

  • 返回列表中的最大值

GREATEST(expr1, expr2, expr3, …)

  • 返回列表中的最小值

LEAST(expr1, expr2, expr3, …)

  • 计算日期 d1->d2 之间相隔的天数

DATEDIFF(d1,d2)

  • 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。

IF(expr,v1,v2)

  • find_in_set(str,strlist)

find_in_set判断是否包含某个字符串
str 要查询的字符串
strlist 字段名 参数以”,”分隔 如 (1,2,6,8,10,22)

  • 匹配个字段是否为纯数字 0为匹配纯数字 1为匹配不是纯数字

AND (TRIM(str) REGEXP ‘[^0-9.]’) = 0

  • 将字符串转换为int数字类型

CAST(right(yearmth, 2) AS SIGNED)

  • 动态获取数据库某个字段来作为条件

FIND_IN_SET (year_id,(SELECT
GROUP_CONCAT(DISTINCT LEFT(字段, 4))
from table))

locate()函数
locate(subStr,string) :函数返回subStr在string中出现的位置
只要找到返回的结果都大于0(即使是查询的内容就是最开始部分),没有查找到才返回0;

// 如果字符串 string 包含 subStr
locate(subStr,string) > 0
// 如果字符串 string 不包含 subStr
locate(subStr,string) = 0

locate()函数实现模糊查询

select * from user where locate('王',name)

在这里插入图片描述
假如现在需求是找出所有名字中含有王,但是不姓王的人找出来,我们用下面那种实现方式如下:

select * from user where locate('王',name,2)

在这里插入图片描述

扩充:对手机号和邮箱脱敏处理

(INSERT (t.phone,4,6,'******')) AS phone,
CONCAT(LEFT(t.email,0),repeat('*',CHAR_LENGTH(REVERSE(SUBSTR(REVERSE(t.email),INSTR(REVERSE(t.email),'@')+1)))),
		CONCAT('@',(SUBSTRING_INDEX(t.email, '@', -1)))) AS email,

扩充 mybtais插入语句

		insert into tableName
        <trim prefix="(" suffix=")" suffixOverrides="," >
            id,project_id
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
            REPLACE(UUID(),"-",""),#{projectId,jdbcType=VARCHAR}
        </trim>

扩充 mybtais更新语句

		UPDATE pm_project AS pm
        <set>
            <if test="projectName != null and projectName != '' and projectName != 'null'">
                pm.project_name = #{projectName,jdbcType=VARCHAR}
            </if>
        </set>
        WHERE pm.id = #{projectId,jdbcType=VARCHAR}

扩充 不同条件下获取某种数据的个数

		SELECT am.knowledge, (COUNT(*)) AS knowledgeNum
        FROM content AS am WHERE am.knowledge IN ('1','2','3','4') GROUP BY am.knowledge;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值