• 前导或后导字符串


    根据需求,需要把某一些数字或字符串进行格式化,前导或后导字符串。Insus.NET把这个功能写成一个自定义函数。需要时,直接使用即可。

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    
    -- =============================================
    -- Author:      Insus.NET
    -- Create date: 2019-05-10
    -- Update date: 2019-05-10
    -- Description: 前导或后导字符
    -- =============================================
    CREATE FUNCTION [dbo].[svf_LeadingString]
        (
            @OriginalCharacter NVARCHAR(MAX),
            @ExpectedLength INT,
            @PadCharacterString NVARCHAR(MAX),
            @LeadingToRight BIT
        )
    RETURNS NVARCHAR(MAX)
    AS
    BEGIN
        DECLARE @rtv NVARCHAR(MAX) = @OriginalCharacter
    
        IF LEN(ISNULL(@OriginalCharacter,'')) < @ExpectedLength
        BEGIN
            DECLARE @ReplicateString NVARCHAR(MAX) = REPLICATE(@PadCharacterString, @ExpectedLength - LEN(@OriginalCharacter))
            
            IF @LeadingToRight = 1        
                SET @rtv = @OriginalCharacter + @ReplicateString        
            ELSE        
                SET @rtv = @ReplicateString + @OriginalCharacter
        END
                  
        RETURN @rtv
    END
    
    GO
    Source Code

    举例可以更好说明函数使用如何。

    --创建临时表,并随机添加一些数据
    DECLARE @dumpTable AS TABLE ([OriginalCharacter] NVARCHAR(MAX))
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES (12)
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES (3456)
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES ('RT')
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES ('GFR')
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES ('345E')
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES (43)
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES (7777)
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES (254687)
    INSERT INTO @dumpTable  ([OriginalCharacter])  VALUES ('adrf')
    
    
    --设置自定义函数的参数
    DECLARE @ExpectedLength INT = 8, @PadCharacterString NVARCHAR(MAX) = '0'
    
    
    SELECT [OriginalCharacter],
        [dbo].[svf_LeadingString]([OriginalCharacter],@ExpectedLength,@PadCharacterString,0) AS [LeadingToLeft],
        [dbo].[svf_LeadingString]([OriginalCharacter],@ExpectedLength,@PadCharacterString,1) AS [LeadingToRight] 
    FROM @dumpTable
    Source Code
  • 相关阅读:
    .net core 使用Https总结
    移动宽带丢失gzip
    .net core 3.0 3.1 在docker 下报SSL Handshake failed with OpenSSL error
    使用sequelize-auto 生成mysql 表的实体时主键没有 autoIncrement: true 属性
    asp.net core 控制静态文件的授权
    我用asp.net core 部署到docker遇到的问题
    docker 命令 记录
    docker 容器连接 host的sql server失败
    asp.net core spa应用(angular) 部署同一网站下
    Java使用算数运算符实现两个整数互换
  • 原文地址:https://www.cnblogs.com/insus/p/10842839.html
Copyright © 2020-2023  润新知