sql server 存储过程判断长度

方法 1:使用 LEN() 函数

LEN() 函数返回字符串的字符数(不包括尾随空格)。

CREATE PROCEDURE CheckStringLength
    @InputString NVARCHAR(MAX)
AS
BEGIN
    IF LEN(@InputString) > 10
    BEGIN
        PRINT '字符串长度大于10'
    END
    ELSE
    BEGIN
        PRINT '字符串长度小于等于10'
    END
END
GO

方法 2:使用 DATALENGTH() 函数

DATALENGTH() 函数返回字符串的字节数,包括尾随空格。

CREATE PROCEDURE CheckStringLengthByBytes
    @InputString NVARCHAR(MAX)
AS
BEGIN
    IF DATALENGTH(@InputString) > 20
    BEGIN
        PRINT '字符串字节长度大于20'
    END
    ELSE
    BEGIN
        PRINT '字符串字节长度小于等于20'
    END
END
GO

方法 3:使用 LEN() 和 DATALENGTH() 结合判断多语言字符

对于包含多字节字符(如中文、日文等)的字符串,LEN() 函数可能不会按预期工作,因为它只计算字符数而不是字节数。在这种情况下,你可以结合使用 LEN() 和 DATALENGTH() 来更准确地判断长度。例如,如果一个字符串全是单字节字符(如ASCII字符),LEN() 和 DATALENGTH() 的结果应该相同。如果不是,那么可以认为存在多字节字符。

CREATE PROCEDURE CheckMultiByteCharStringLength
    @InputString NVARCHAR(MAX)
AS
BEGIN
    IF LEN(@InputString) * 2 > DATALENGTH(@InputString)
    BEGIN
        PRINT '字符串包含多字节字符'
    END
    ELSE
    BEGIN
        PRINT '字符串不包含多字节字符'
    END
END
GO

方法 4:使用 CASE 语句和条件判断

你也可以在存储过程中使用 CASE 语句来进行更复杂的条件判断。

CREATE PROCEDURE CheckStringLengthWithCase
    @InputString NVARCHAR(MAX)
AS
BEGIN
    DECLARE @Length INT = LEN(@InputString);
    SELECT CASE 
            WHEN @Length > 10 THEN '字符串长度大于10'
            WHEN @Length = 10 THEN '字符串长度等于10'
            ELSE '字符串长度小于10'
           END AS LengthStatus;
END
GO

 

posted @ 2025-02-05 12:54  路飞园  阅读(9)  评论(0编辑  收藏  举报