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);
相关推荐
敲敲敲-敲代码1 天前
【SQL实验】高级查询(三)含附加数据库操作
数据库·sql·sqlserver
敲敲敲-敲代码1 天前
【SQL实验】更新操作
数据库·笔记·sql·学习·sqlserver
geovindu1 天前
string split function in postgreSQL 17.01 or SQL Server2019 or mySQL 9.0
数据库·sql·mysql·postgresql·sqlserver
qtvb19872 天前
Sql server 备份还原方法
数据库·sqlserver
威哥爱编程5 天前
SQL Server 数据太多如何优化
数据库·sql·sqlserver
woshilys5 天前
sql server 文件和文件组介绍
sqlserver
CodeCraft Studio7 天前
【实用技能】在 SQL Server 中使用 LIMIT 子句的替代方案
数据库·sql·sqlserver
我是苏苏7 天前
数据库的使用02:SQLServer的连接字符串、备份、还原、SQL监视相关设置
数据库·sqlserver
小蜗的房子7 天前
SQL Server 2022安装要求(硬件、软件、操作系统等)
运维·windows·sql·学习·microsoft·sqlserver·操作系统
敲敲敲-敲代码10 天前
【SQL实验】高级查询(包含导入ACCESS数据的详细操作)
数据库·sql·学习·sqlserver