使用掩码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 |
|
|
|
|
|