应用掩码在SQL Server查询/视图中格式化字符串

Mol*_*och 8 sql sql-server

是否有一种巧妙的方法将掩码应用于SQL Server查询中的字符串?

我有两个表,一个用电话号码存储为varchar,没有文字0155567890和电话类型,它有一个掩码用于该电话号码类型:(##) #### ####

返回字符串(对于合并文档)的最佳方法是什么,以便查询返回完全格式化的电话号码:

(01) 5556 7890
Run Code Online (Sandbox Code Playgroud)

小智 7

我也需要这个,并且由于Sjuul的伪代码,我能够创建一个函数来执行此操作.

CREATE FUNCTION [dbo].[fx_FormatUsingMask] 
(
    -- Add the parameters for the function here
    @input nvarchar(1000),
    @mask nvarchar(1000)
)
RETURNS nvarchar(1000)
AS
BEGIN
    -- Declare the return variable here
    DECLARE @result nvarchar(1000) = ''
    DECLARE @inputPos int = 1
    DECLARE @maskPos int = 1
    DECLARE @maskSign char(1) = ''

    WHILE @maskPos <= Len(@mask)
    BEGIN
        set @maskSign = substring(@mask, @maskPos, 1)

        IF @maskSign = '#'
        BEGIN
            set @result = @result + substring(@input, @inputPos, 1)
            set @inputPos += 1
            set @maskPos += 1
        END
        ELSE
        BEGIN
            set @result = @result + @maskSign
            set @maskPos += 1
        END
    END
    -- Return the result of the function
    RETURN @result

END
Run Code Online (Sandbox Code Playgroud)