替换功能结合ltrim和rtrim

时间:2019-01-04 20:05:30

标签: sql sql-server

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

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

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

4 个答案:

答案 0 :(得分:1)

在任何时候都不会将,替换为REPLACE( LTRIM(RTRIM( dbo.UFN_SEPARATES_COLUMNS(CompletionDetails, 3, ',') )) ,'.', '' ) AS BuildRequestID,

通过将整个表达式的格式设置为覆盖多行,我们可以使所有这些操作更容易理解:

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

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

CompletionDetails

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

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

然后,代码使用.函数从结果中删除所有{{1}}个字符(将它们替换为空字符串)。

答案 1 :(得分:0)

该代码通过LTRIM()RTRIM()函数(即dbo.x_COLUMNS)返回的dbo.x_COLUMNS(CompletionDetails, 3, ',')LTRIM函数修剪前导和尾随空格。 RTRIM左,.右。

然后它将通过REPLACE()函数将所有句点(3)替换为空。

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

答案 2 :(得分:0)

  

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

不,它不是那样。
但这确实是

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

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

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

答案 3 :(得分:0)

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

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

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

结果

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