回答

收藏

使用掩码SQL Server在视图中设置字符串格式

技术问答 技术问答 204 人阅读 | 0 人回复 | 2023-09-14

是否有一种巧妙的方法将掩码应用于掩码SQL Server查询中的字符串?
1 y% f8 W+ ~# {+ I+ J) o) k我有两个表,其中一个表的电话号码存储在varchar,没有文字,0155567890还有一种电话类型,其中一种用于电话号码类型的掩码:`(##)
7 {$ w+ \  M) Q0 x0 I, Y1 r5 x- d- k+ O####`返回字符串(合并文档)查询完全格式化返回电话号码的最佳方式是什么:3 _/ B! _' W) _' T  f* r
(01) 556 7890     
  x. [- g9 F- |% C    解决方案:                                                               
5 t& c: ?, P! x! s: A! g) w                                                                如评论所述,如果在大量行中使用,我下面的原始答案将导致性能不佳。
8 O( ~) q+ m5 r- s+ w. K! y若考虑性能,则首选i-one的答案。

* z, @/ ?5 L! }6 w/ d+ F' n我也需要它,因为Sjuul我可以创建一个函数来执行此操作。
& X$ c0 x! \) G7 v0 D! w/ XCREATE FUNCTION [dbo].[fx_FormatUsingMask] (    -- Add the parameters for the function here    @input nvarchar(1000)  @mask nvarchar(1000))RETURNS nvarchar(1000)ASBEGIN    -- 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  =            set @maskPos  =                 END        ELSE        BEGIN            set @result = @result   @maskSign            set @maskPos  =                 END    END    -- Return the result of the function    RETURN @resultEND
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则