【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数

在这里插入图片描述

【新星计划2023】SQL SERVER -- 内置函数和自定义函数

    • 1. 快速插入100W笔数据
    • 2. 聚合函数
      • 2.1 Demo
    • 3. 字符串函数
      • 3.1 Demo
    • 4. 时间日期函数
      • 4.1 Demo
    • 5. 排名函数
      • 5.1 ROW_NUMBER()
      • 5.2 RANK()
      • 5.3 NTILE()
      • 5.4 DENSE_RANK()
    • 6. 数学函数
      • 6.1 Demo
      • 6.2 Rand
      • 6.3 Round(没懂)
    • 7. 转换函数
      • 7.1 Demo
    • 8. 逻辑函数
      • 8.1 Demo
    • 9. Awakening


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Officail Website: https://learn.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver16.
Officail Website(中文): https://learn.microsoft.com/zh-cn/sql/sql-server/?view=sql-server-ver16.


1. 快速插入100W笔数据

  • Java快速插入数据
    Insert Data: https://blog.csdn.net/weixin_43916074/article/details/126412533.
-- DROP TABLE MDM.op.mock_ten_million;

CREATE TABLE MDM.op.mock_ten_million (
	Indexer int NULL,
	RandNumber float NULL,
	mock_guid uniqueidentifier NULL,
	mock_datetime datetime NULL,
	mock_string varchar(8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
);

2. 聚合函数

  • 介绍
    1.聚合函数对一组值执行计算,并返回单个值。 除了 COUNT(*) 外,聚合函数都会忽略 Null 值。
    2.聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用。
  • 官方提供的函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第1张图片

2.1 Demo

  • avg() 算一组数的总和,然后除以为null的个数,得到平均值
    select avg(id) from test
  • max(),min()最大值最小值
    select min(id) from test
    select max(id) from test
  • sum()求和
    select sum(id) from test
  • count()计算总数
    select count(id) from test

3. 字符串函数

  • 官方提供的几种字符串函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第2张图片

3.1 Demo

  • len() 计算字符串的长度
    select LEN(name) from test1
  • lower() ,upper()大小写转换
    select lower(‘STUDENT’)
    select upper('student ')
  • ltrim() ,rtrim()去除前后空格
    declare @str varchar(100) = ’ a a a '
    select ltrim(@str)
    select rtrim(@str)
  • substring() ,left(), right()字符串截取
    declare @str varchar(100) = ’ hello world,this is test '
    select substring(@str,6,6)
    select left(@str ,5)
    select right(@str ,6)
  • replace()替换
    select replace(@str,‘o’,‘e’)
  • reverse()反转
    select reverse(‘abc’) --cba
  • replicate()指定的次数重复字符串值
    select replicate(‘abc’,4) --abcabcabcabc
  • charindex()在字符串2 中查找字符串 1,返回第一次匹配的索引
    select charindex(‘ab’,‘BCabTabD’) -->3
    select charindex(‘ab’,‘BCabTabD’,4) -->6

4. 时间日期函数

  • 高精度系统日期和时间函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第3张图片
  • 低精度系统日期和时间函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第4张图片
  • 返回日期和时间函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第5张图片
  • 修改日期和时间函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第6张图片
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第7张图片

4.1 Demo

  • GetDate()获取当前日期
    select getdate()
    当前系统日期和时间
    SELECT SYSDATETIME(),SYSDATETIMEOFFSET(),SYSUTCDATETIME(),CURRENT_TIMESTAMP,GETDATE(),GETUTCDATE();
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第8张图片
    当前系统日期
    SELECT CONVERT (date, SYSDATETIME()),CONVERT (date, SYSDATETIMEOFFSET()),CONVERT (date, SYSUTCDATETIME()),CONVERT (date, CURRENT_TIMESTAMP),CONVERT (date, GETDATE()),CONVERT (date, GETUTCDATE());
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第9张图片
    当前系统时间
    SELECT CONVERT (time, SYSDATETIME()),CONVERT (time, SYSDATETIMEOFFSET()),CONVERT (time, SYSUTCDATETIME()),CONVERT (time, CURRENT_TIMESTAMP),CONVERT (time, GETDATE()),CONVERT (time, GETUTCDATE());
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第10张图片
  • 单独获取年月日
    select year(getdate())
    select month(getdate())
    select day(getdate())
  • dateadd()日期加法
    select dateadd(year,45,‘1990-12-11’)
    select dateadd(month,45,‘1990-12-11’)
    select dateadd(day,45,‘1990-12-11’)
    select dateadd(month,45,‘1990-12-11’)
  • DATEDIFF()日期减法
    select datediff(YYYY,‘2011-11-11’,‘2012-12-12’)
    select datediff(day,‘2011-11-11’,‘2012-12-12’) -->397 两个日期相差的天数
  • GetDate()获取当前日期
    select LEN(name) from test1
  • FORMAT () 用于对字段的显示进行格式化。
    select FORMAT(stu_intime,‘yyyy-MM-dd hh:mm:ss’) as intime from stu

5. 排名函数

  • 官方提供的几种排名期函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第11张图片

5.1 ROW_NUMBER()

  • 介绍
    1.ROW_NUMBER()是一个Window函数,它为结果集的分区中的每一行分配一个连续的整数。 行号以每个分区中第一行的行号开头。
    2.需要和over()函数搭配使用,over中又包含PARTITION BY和ORDER BY两个子句
  • sql
    1.order by
    select ROW_NUMBER() over(order by Indexer) as rowNumber , * from op.mock_ten_million mtm
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第12张图片
    2.partition by
    select ROW_NUMBER() over(PARTITION by mock_datetime order by Indexer) as rowNumber , * from op.mock_ten_million mtm

5.2 RANK()

5.3 NTILE()

5.4 DENSE_RANK()

6. 数学函数

  • 官方提供的几种数学函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第13张图片

6.1 Demo

  • abs()绝对值
    select abs(-23.4)
  • CEILING()返回大于或等于指定数值表达式的最小整数
    SELECT CEILING(123.45), CEILING(-123.45), CEILING(0.0); --> 124.00 -123.00 0.00
  • FLOOR()返回小于或等于指定数值表达式的最大整数
    SELECT FLOOR(123.45), FLOOR(-123.45); --> 123 -124
  • PI()返回 PI 的常量值
    select pi() ->3.14159265358979

6.2 Rand

  • RAND()返回的数值类型
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第14张图片
  • 注意
    1.使用同一个种子值重复调用 RAND() 会返回相同的结果。
    SELECT RAND(100), RAND(), RAND()
  • 生成四个随机数
    DECLARE @counter SMALLINT;
    SET @counter = 1;
    WHILE @counter < 5
    BEGIN
    SELECT RAND() Random_Number
    SET @counter += 1
    END;

6.3 Round(没懂)

  • 语法
    在这里插入图片描述
  • 返回类型
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第15张图片
  • sql
    length 为负数,并且大于小数点前的数字个数,则 ROUND 将返回 0。
    SELECT ROUND(748.58, -4) --> 0
    SELECT ROUND(748.58, -1) --> 750
    SELECT ROUND(748.58, -2) --> 700
    SELECT ROUND(748.58, -3) --> 算数溢出

7. 转换函数

  • 官方提供了几个转换函数
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第16张图片

7.1 Demo

length 为负数,并且大于小数点前的数字个数,则 ROUND 将返回 0。
SELECT ROUND(748.58, -4) --> 0

8. 逻辑函数

  • 官方提供了两个逻辑函数
    CHOOSE
    IIF

8.1 Demo

  • CHOOSE
    1.简单的查询
    SELECT CHOOSE ( 3, ‘Manager’, ‘Director’, ‘Developer’, ‘Tester’ ) AS Result; --> 返回第三项 Developer
    2.基于列的查询
    SELECT sty_id, CHOOSE (sty_id, ‘A’,‘B’,‘C’,‘D’,‘E’) AS Expression1 FROM student;
  • IIF
    3.简单的查询
    DECLARE @a INT = 45, @b INT = 40;
    SELECT [Result] = IIF( @a > @b, ‘TRUE’, ‘FALSE’ );
    --> TRUE
    4.注意
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第17张图片
    【新星计划2023】SQL SERVER (03) -- 内置函数和自定义函数_第18张图片

9. Awakening

     在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。

在这里插入图片描述

你可能感兴趣的:(Sql,Server,数据库,java)