当前位置: 首页 > 面试题库 >

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

乜明朗
2023-03-14
问题内容

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

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

####`

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

(01) 5556 7890

问题答案:

如评论中所述,如果在大量行中使用,我下面的原始答案将导致糟糕的性能。
如果考虑性能,则首选i-one的答案。

我也需要它,并且由于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


 类似资料:
  • 问题内容: 如何在SQL SERVER的字符串中的x和y char之间替换字符。例如,如果我有:TEST123456在结尾处有TE ** 56。我不知道字符串会持续多长时间,但我知道我需要屏蔽字符串中x和y之间的字符 问题答案: 您可以使用和作为: 当您说 “我不知道字符串会多长”时 ,该函数将根据和提供您返回的星号“ *” 。

  • 问题内容: 我正在尝试找到格式化sql查询字符串的最佳方法。在调试应用程序时,我想记录所有sql查询字符串的文件,并且正确格式化字符串很重要。 选项1 这对于打印sql字符串很有用。 如果字符串太长且不适合80个字符的标准宽度,则不是一个好的解决方案。 选项2 这里的代码很清楚,但是当您打印sql查询字符串时,会得到所有这些烦人的空格。 的u ‘\ n选取FIELD1,FIELD2,字段3,字段4

  • 我有以下命名查询: 当我尝试按如下方式执行时: 然后我得到以下例外: JAVAlang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称从Userdetails u中选择u,其中u.username=:username来设置参数值。 这是怎么造成的,我该如何解决?

  • 问题内容: 我需要解码包含查询字符串的URI;预期的输入/输出行为类似于以下内容: 我尝试使用java.net.URI,但是它似乎可以对查询字符串进行解码,因此在上面的示例中,我留下的是“ alias = pos&FirstName = Foo + A&B = C&LastName = Bar”,因此对于“& “是查询分隔符,或者是查询组件中的字符。 编辑: 我刚刚尝试了URI.getRawQue

  • 问题内容: 如果我想使格式化后的字符串动态可调,则可以从 至 但是,这里的字符串连接似乎很麻烦。还有其他简化方法吗? 问题答案: 您可以从参数列表中获取填充值: 您甚至可以动态插入填充值:

  • 我想知道您通常是否将查询字符串中的任何字母大写,使用短划线或下划线作为变量名称,或者具有任何其他查询字符串命名约定。我找不到任何参考资料。 编辑:既然似乎没有约定俗成,有没有最佳实践或常用的方法?