本文主要是介绍59.SQLSERVER中自定义函数的基本使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.自定义函数:
CREAT FUNCTION [dbo].[GetVisitTypeCode] (@VisitTimeAndType VARCHAR(40))RETURNS VARCHAR(2)ASBEGINDECLARE @VisitTypeName varchar(10),@VisitTypeCode varchar(2),@VisitTimeAndType1 VARCHAR(40)IF @VisitTimeAndType IS NOT NULLBEGINSET @VisitTimeAndType1=(SELECT REPLACE(@VisitTimeAndType,')',''))SET @VisitTypeName=(SELECT substring(@VisitTimeAndType1,12,13))ENDELSE SET @VisitTypeName=' 'IF @VisitTypeName='门诊'SET @VisitTypeCode=1ELSE IF @VisitTypeName='家庭'SET @VisitTypeCode=2ELSE IF @VisitTypeName='电话'SET @VisitTypeCode=3ELSESET @VisitTypeCode=' 'RETURN @VisitTypeCodeEND
2.调用自定义函数:
Select GetVisitTypeCode(‘2024-01-23(家庭)’) 输出结果:1
3.sqlserver中的replacce()函数的使用
基本语法:replace(str,被替换的字符串,将要替换的字符串)
例子:将“‘2024-01-23(家庭)”的后小括号去掉(即小括号:替换成空字符)
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()函数进行字符串截取,不能正常识别后括号(小括号)
例如:
substring(‘2024-01-23(家庭)’,12,13)//输出结果:家庭)
注意4:substring截取的字符串不能为空
2.自定义函数的表值函数
表值函数分为内联表值函数和多行表值函数
(1)、内联表值函数
首先,创建一个测试表格USER,包含ID、birthday和age三个列。
--创建表格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,返回指定年龄范围内的用户信息。
CREATE FUNCTION GetUserByDateRange(@StartAge,@EndAge)RETURNS TABLEASRETURN( SELECT id, birthday, ageFROM OrdersWHERE age>= @StartAge AND age<= @EndAge);
最后,使用内联表值函数GetUserByDateRange查询指定年龄范围内的用户信息:
SELECT *FROM GetUserByDateRange(20, 25);
这篇关于59.SQLSERVER中自定义函数的基本使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!