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);