是否有一种巧妙的方法将掩码应用于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之间的字符 问题答案: 您可以使用和作为: 当您说 “我不知道字符串会多长”时 ,该函数将根据和提供您返回的星号“ *” 。
我有以下命名查询: 当我尝试按如下方式执行时: 然后我得到以下例外: JAVAlang.IllegalArgumentException:您试图使用查询字符串中不存在的字符串名称从Userdetails u中选择u,其中u.username=:username来设置参数值。 这是怎么造成的,我该如何解决?
问题内容: 我正在尝试找到格式化sql查询字符串的最佳方法。在调试应用程序时,我想记录所有sql查询字符串的文件,并且正确格式化字符串很重要。 选项1 这对于打印sql字符串很有用。 如果字符串太长且不适合80个字符的标准宽度,则不是一个好的解决方案。 选项2 这里的代码很清楚,但是当您打印sql查询字符串时,会得到所有这些烦人的空格。 的u ‘\ n选取FIELD1,FIELD2,字段3,字段4
问题内容: 我需要解码包含查询字符串的URI;预期的输入/输出行为类似于以下内容: 我尝试使用java.net.URI,但是它似乎可以对查询字符串进行解码,因此在上面的示例中,我留下的是“ alias = pos&FirstName = Foo + A&B = C&LastName = Bar”,因此对于“& “是查询分隔符,或者是查询组件中的字符。 编辑: 我刚刚尝试了URI.getRawQue
问题内容: 如果我想使格式化后的字符串动态可调,则可以从 至 但是,这里的字符串连接似乎很麻烦。还有其他简化方法吗? 问题答案: 您可以从参数列表中获取填充值: 您甚至可以动态插入填充值:
我想知道您通常是否将查询字符串中的任何字母大写,使用短划线或下划线作为变量名称,或者具有任何其他查询字符串命名约定。我找不到任何参考资料。 编辑:既然似乎没有约定俗成,有没有最佳实践或常用的方法?