59.SQLSERVER中自定义函数的基本使用

1.自定义函数:

sql 复制代码
CREAT FUNCTION [dbo].[GetVisitTypeCode]  

(



@VisitTimeAndType VARCHAR(40)

)

RETURNS VARCHAR(2)

AS

BEGIN

DECLARE @VisitTypeName varchar(10),@VisitTypeCode varchar(2),@VisitTimeAndType1 VARCHAR(40)

IF @VisitTimeAndType IS NOT NULL

BEGIN

SET @VisitTimeAndType1=(SELECT REPLACE(@VisitTimeAndType,')',''))

SET @VisitTypeName=(SELECT substring(@VisitTimeAndType1,12,13))

END

ELSE SET @VisitTypeName=' '

IF @VisitTypeName='门诊'

SET  @VisitTypeCode=1

ELSE IF @VisitTypeName='家庭'

SET  @VisitTypeCode=2

ELSE IF @VisitTypeName='电话'

SET @VisitTypeCode=3

ELSE

SET @VisitTypeCode=' '

RETURN @VisitTypeCode

END

2.调用自定义函数:

sql 复制代码
Select GetVisitTypeCode('2024-01-23(家庭)') 输出结果:1

3.sqlserver中的replacce()函数的使用

基本语法:replace(str,被替换的字符串,将要替换的字符串)

例子:将"'2024-01-23(家庭)"的后小括号去掉(即小括号:替换成空字符)

sql 复制代码
Select replace('2024-01-23(家庭)',')','')

输出结果为:2024-01-23(家庭

4.sqlserver使用substring()函数

基本语法:

substring(字符串,startIndex,endIndex)

注意1:substring的index从1开始

注意2:substring的startIndex,endIndex都是闭空间

注意3:sqlserver使用substring()函数进行字符串截取,不能正常识别后括号(小括号)

例如:

sql 复制代码
substring('2024-01-23(家庭)',12,13)

//输出结果:家庭)

注意4:substring截取的字符串不能为空

2.自定义函数的表值函数

表值函数分为内联表值函数和多行表值函数

(1)、内联表值函数

首先,创建一个测试表格USER,包含ID、birthday和age三个列。

sql 复制代码
--创建表格

CREATE TABLE USER

(

    id INT PRIMARY KEY,

    birthday DATE,

    age INT

);

--插入一些数据

INSERT INTO USER(id, birthday , age)

VALUES (1, '2022-01-01', 21),

       (2, '2022-01-02', 20),

       (3, '2022-01-03',33),

       (4, '2022-01-04', 23),

       (5, '2022-01-05', 22);

接下来,创建一个内联表值函数GetUserByDateRange,接收两个日期参数@StartAge和@EndAge,返回指定年龄范围内的用户信息。

sql 复制代码
CREATE FUNCTION GetUserByDateRange

(

    @StartAge,

    @EndAge

)

RETURNS TABLE

AS

RETURN

( 

    SELECT id, birthday, age

    FROM Orders

    WHERE age>= @StartAge AND age<= @EndAge

);

最后,使用内联表值函数GetUserByDateRange查询指定年龄范围内的用户信息:

sql 复制代码
SELECT *

FROM GetUserByDateRange(20, 25);
相关推荐
询问QQ:688238863 小时前
基于滑膜边结构控制的机器人运动学控制Simulink仿真模型解析与原理学习指南
sqlserver
网硕互联的小客服17 小时前
MYSQL数据库和MSSQL数据库有什么区别?分别适用于什么脚本程序?
数据库·mysql·sqlserver
MM_MS1 天前
SQL Server数据库和Visual Studio (C#)联合编程
开发语言·数据库·sqlserver·c#·visual studio
SwBack3 天前
【综合应急】单机取证
sqlserver·ctf·应急响应·密码破解·单机取证·solar应急响应
z***02604 天前
SpringBoot连接多数据源MySQL、SqlServer等(MyBatisPlus测试)
spring boot·mysql·sqlserver
v***87045 天前
【SqlServer】SQL Server Management Studio (SSMS) 下载、安装、配置使用及卸载——保姆级教程
数据库·sqlserver
jackletter5 天前
五大关系数据库(sqlserver、mysql、oracle、pgsql、sqlite)如何结合c#存取时间
mysql·oracle·sqlserver
杨云龙UP7 天前
SQL Server 备份异地同步 + 清理脚本
运维·服务器·数据库·sql·mysql·sqlserver
v***59838 天前
【SQL Server】超详细SQLServer日期转换、字符串、数学、聚合等常用函数大全(最新版)
数据库·sqlserver
e***193510 天前
【SqlServer】SQL Server Management Studio (SSMS) 下载、安装、配置使用及卸载——保姆级教程
数据库·sqlserver