繁体   English   中英

替换功能结合ltrim和rtrim

[英]Replace function combined with ltrim and rtrim

有人可以帮我理解以下代码:

REPLACE(LTRIM(RTRIM(dbo.UFN_SEPARATES_COLUMNS(CompletionDetails, 3, ','))), '.', '') AS BuildRequestID,

它是否说删除所有尾随和前导空格,然后用逗号替换3。 接下来,如果存在. ,将其替换为' '

它在任何时候都不会用,替换3

我们可以通过格式化完整的表达式以覆盖多行来使所有这些操作更容易理解:

REPLACE(
    LTRIM(RTRIM(
        dbo.UFN_SEPARATES_COLUMNS(CompletionDetails, 3, ',')
    )) 
    ,'.', ''
) AS BuildRequestID,

这样的表达式必须从内而外读取。 因此,我们从最内部开始:

dbo.UFN_SEPARATES_COLUMNS(CompletionDetails, 3, ',')

UFN_SEPARATES_COLUMNS()函数不是Sql Server的一部分 ,而是由您组织中的某人添加的,或者是您要查看的数据库的供应商软件包的一部分。 但是我有信心基于推论和链接(通过Google找到)将CompletionDetails视为定界文本,其中定界符是逗号(基于第三个','参数)并返回第三个字段(基于第2个字段) 3参数,其中计数从1而不是0开始。 随着CSV解析器的发展,这一功能特别幼稚,因此请务必谨慎。

然后,我们使用LTRIM()RTRIM()从字段中删除前导空格和尾随空格。 并不是所有的白色皮肤都被去除了。 仅空格字符。 制表符,换行符等未修剪。 Sql Server 2017具有新的TRIM()函数,该函数可以处理更宽的字符集,并且一次调用即可处理字符串的两侧。

然后,代码使用REPLACE()函数删除all . 结果中的字符(用空字符串替换)。

该代码通过LTRIM()RTRIM()函数dbo.x_COLUMNS从函数dbo.x_COLUMNS ...即dbo.x_COLUMNS(CompletionDetails, 3, ',')返回的任何内容的前导和尾随空格。 左侧是LTRIM ,右侧是RTRIM

然后,它通过REPLACE()函数将所有句点( . )替换为REPLACE()

因此,总而言之,它将删除字符串中的所有句点以及前导和尾随空格。

删除所有尾随和前导空格,然后将3替换为逗号。 接下来,如果有。,则将其替换为''

不,它没有说。
但这确实是:

REPLACE(REPLACE(LTRIM(RTRIM(CompletionDetails)), '3', ','), '.', ' ')

不清楚是否要. 替换为' '''
我使用第一种情况,您可以根据需要进行更改。
这样更容易理解:

  1. 删除所有尾随和前导空格: LTRIM(RTRIM(CompletionDetails))
  2. 用逗号替换3: REPLACE( ?, '3', ',')
  3. 用''替换: REPLACE(? , '.', ' ')REPLACE(? , '.', '')

LTRIM删除前导空格。 RTRIM删除尾随空格。 替换删除句点。

Declare @Val Char(20) = '   Frid.ay    '

Select REPLACE(
                LTRIM(
                      RTRIM(
                         @Val   --dbo.x_COLUMNS(CompletionDetails, 3, ',')
                            )
                      ), '.', ''
              ) 

结果

BuildRequestID
--------------
Friday

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM