MySQL (函数)小记

针对工作中用到的mysql语法做一个记录,随时更新.

1.判断语句

使用(case table_field when field_value1 then 自定义值1 when field_value2 then 自定义值2 else 自定义值3 end ) as alias

当字段(table_field)值为field_value1时,则定义的别名(alias)取值为自定义值1;
当字段(table_field)值为field_value2时,则定义的别名(alias)取值为自定义值2;
当字段(table_field)值没有匹配到任意值时,则定义的别名(alias)取值为自定义值3;

eg: 
select name,sex,(case sex when '1' then '男' when '0' then '女' else '未知性别' end) as sex_desc,age from user;

在这里插入图片描述

2.模糊查询

一般情况下,我们自己写模糊查询sql都是通过关键字like实现,比如:name like %小%,但是这种方式针对一些特殊字符会失去作用,比如特殊字符_?等.

在mysql中%和_都是含有特殊含义的,%表示任意字符,_表示一个字符,比如%小%表示’小’前后包含任意字符的都匹配,_小表示’小’前面只能含一个字符才匹配,所以使用like关键字不能模糊查询含有下划线的字符,这样查询到的是全部数据;

解决方式1:
使用关键字regexp,比如:name regexp '小' ,这种方式和上面的name like %小%作用一样,这种方式可以解决字符包含有_的情况,比如name regexp '_'

eg: 
select * from user where name REGEXP '_';

在这里插入图片描述
但是方式1针对特殊字符?则不好使,会报语法错误:
在这里插入图片描述
所以推荐使用方式2:使用mysql内置函数locate('需要匹配的字符',被匹配的字段) > 0

eg: 
select * from user where LOCATE('?',name) > 0;
select * from user where LOCATE('_',name) > 0;
select * from user where LOCATE('小',name) > 0;

在这里插入图片描述

3.MySql字段截取,字符串拆分SUBSTRING_INDEX

SUBSTRING_INDEX(‘a,b,c’,‘,’,1) 截取第一个逗号(,)号以前的字符串,即结果为a;
SUBSTRING_INDEX(‘a,b,c’,‘,’,2) 截取第二个逗号(,)号以前的字符串,即结果为a,b;
SUBSTRING_INDEX(‘a,b,c’,‘,’,-1) 截取倒数第一个逗号(,)号以后的字符串,即结果为c;

4.MySql字段替换,字符串替换replace( str, from_str, to_str)

name = “abcd_efg”
replace( name, '‘, ‘’) 替换name字段中’‘字符为’'空串,即结果为"abcdefg";

5.MySql查询字段不为null的数据

select * from person where name IS NOT NULL   
或者 
select * from person where NOT ISNULL(name)

上面两个sql在sql软件都可以执行,但是mapper文件里面第二种会报错,建议使用第一种

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值