sql语句常见函数

常见函数

  • 语法:
    select 函数名(实参列表) 【from 表】;

  • 分类:

  • 单行函数
    字符函数

concat:连接
substr:截取子串
upper:大写
lower:小写
replace:替换
length:获取字节长度
trim:去除前后空格
lpad:左填充
rpad:右填充
instr:获取子串第一次出现的索引

数学函数

ceil:向上取整
round:向下取整
mod:取模
floor:向下取整
truncate:截断
rand:获取随机数,返回0-1之间的小数

日期函数

now:返回当前日期+时间
year:返回年
month:返回月
day:返回日
data_format:将日期转换成字符
curdate:返回当前日期
curtime:返回当前时间
str_to_data:将字符转换成日期
datadiff:返回两个日期相差得天数
monthname:以英文形式返回月

其他函数

version:当前数据库服务器版本
database:当前打开的数据库
user:当前用户
password(‘字符’):返回该字符得的加密形式
md5(‘字符’):返回该字符得的加密形式

流程控制函数

if(条件表达式, 表达式1, 表达式2);

case 变量或者表达式或者字段
when 常量1 then 值1
when 常量2 then 值2

else 值n
end;

case
when 条件1 then 值1
when 条件2 then 值2

else 值n
end;

  • 分组函数

max, min, sum, avg,count

  • 功能:做统计使用,又称为统计函数
  • 语法:select max(【distinct】字段) from 表名
  • 支持: sum和avg一般用于处理数值型,max、min、count可以处理任何数据类型。以上分组函数都可以支持null

单行函数

1、字符函数

length获取参数值的字节个数

SELECT LENGTH("holy"); #4
SELECT LENGTH("长度"); #3*2 

concat 拼接字符串

SELECT CONCAT(uname, '_', upassword) FROM userinfo;

upper大写, lower小写

SELECT UPPER("hLow"), LOWER("Hlow");

substr, substring截取字符.

  • 截取从指定索引处后面所有字符,包括指定的哪个字符。注意,索引从1开始

    SELECT SUBSTR('张三丰与郭襄', -2); #郭襄
    SELECT SUBSTR('张三丰与郭襄', 5); #郭襄
    
  • 截取从指定索引处指定字符长度的字符

      SELECT SUBSTR('张三丰与郭襄', 1, 3); 
    

instr:返回子串第一次出现的索引,如果找不到就返回0

SELECT INSTR('张三丰与郭襄', '郭襄'); #5,郭襄对应张三丰与郭襄中的索引是5

trim:

SELECT TRIM("     abc   "); #去除字符串首尾的空格
SELECT TRIM('a' FROM "aaaaaaa   aaaaa掌声aaaaaaaa   "); #    aaaaa掌声aaaaaaaa   :去除字符串首尾的的a,不去除空格
SELECT TRIM('aa' FROM "aaaaaaaaaaa掌声aaaaaaaa   ");  #a掌声aaaaaaaa   

lpad:用指定的字符填充实现左指定的长度,如果源字符串的长度大于指定的长度就截断

SELECT LPAD('智能', 10, '*');
SELECT LPAD('智能', 1, '*');

rpad:用指定的字符填充实现右指定的长度,如果源字符串的长度大于指定的长度就截断

SELECT RPAD('智能', 10, '*');

replace替换

SELECT REPLACE('你好啊,世界', '世界', '宇宙');

2、数学函数

round 四舍五入

SELECT ROUND(1.49);  #1
SELECT ROUND(1.50);  #2
SELECT ROUND(-1.5);   #-2
SELECT ROUND(-1.6);   #-2
SELECT ROUND(1.6);   #2
SELECT ROUND(5.555, 2); # 5.56

ceil向上取整,返回>=该参数的最小整数

SELECT CEIL(-1.00); #-1
SELECT CEIL(-1.10); #-1
SELECT CEIL(1.00); #1
SELECT CEIL(1.10); #2

floor向下取整,返回<=该参数的最大整数

SELECT FLOOR(-1.00); #-1
SELECT FLOOR(-1.10); #-2
SELECT FLOOR(1.00); #1
SELECT FLOOR(1.10); #1

truncate 截取小数位数

SELECT TRUNCATE(1.6999, 1); #1.6

mod取余

SELECT MOD(10, 3); #1
SELECT MOD(10, -3); #1
SELECT MOD(-10, 3); #-1

其他函数

SELECT VERSION();  #mysql版本
SELECT DATABASE(); #当前使用的数据库名
SELECT USER();     #当前用户

流程控制函数

if函数:if-else

SELECT IF(1, "成立", "不成立");

case

  • 用法1:类似switch

  • 用法2:多重if
    /*
    case 要判断的字段或者表达式
    when 常量1 then 显示1
    when 常量2 then 显示2

    else 显示n
    end
    */

      SELECT uname, 
      CASE uname 
      WHEN 1 THEN '显示1' 
      WHEN 6 THEN '显示6' 
      ELSE '显示n' 
      END AS 姓名
      FROM userinfo;
    

猜你喜欢

转载自blog.csdn.net/zhizhengguan/article/details/84071950