Sql 右边有不必要的 space 的数据
Sql data with Unnecessary space on right
这是我的 Sql Fiddle 模式和数据。 SQL 我写的查询工作正常并且 returns 数据。
http://sqlfiddle.com/#!6/bcf65/4
但令人困惑的是,当我在 table 中插入数据时从未创建时,为什么我有 "space"。
例如从查询中查看这部分代码:
(SUBSTRING
(
[xml]
,CHARINDEX('P',[xml]) + 3
,LEN([xml])-8
)
在 SubString
函数中我必须删除一些 space 才能得到结果 LEN([xml])-8
.
让我们假设两种情况:(均来自SQL Fiddle插入查询)
我有一行数据 177PKR3572427992899
。它的总长度是'19'。所以在上面使用的 SubString 函数中,它的起始位置是 7
,即数据中 R
之后的 3
并且要在跳过最后 2 位数字的同时获得它的长度,Len()
函数应该是Len(xml)-1
。但是,相反,我必须使用 -8
来跳过最后 2 位数字。我真的很困惑,这个 space 是从哪里来的?现在让我们看第二个。
我有一行数据 0PKR101
。它的总长度是'7'。所以在 SQL Fiddle 中的 SubString 函数中,它的起始位置是 4
即 1
在数据中的 R
之后并在跳过最后 2 位数字的同时获取它的长度, Len()
函数应该是 Len(xml)-1
。但是,我必须在这里使用 -6
来跳过最后 2 位数字。我怎样才能让它像 len(xml)-1
那样工作..
您忘记了您的“177PKR”
第三个参数是长度,从PKR之后开始
所以你的长度是 {total length} - 2 - ({index of P}+3)
,在第一种情况下等于 {total length} - 8
,在第二种情况下等于 {total length} - 6
。
这里有一个丰富多彩的解释:
当您想要从末尾开始的子字符串时,一般情况是:
substring(string, offset, length - offset - x)
其中 x
是您想要的距末尾的偏移量。
这是我的 Sql Fiddle 模式和数据。 SQL 我写的查询工作正常并且 returns 数据。
http://sqlfiddle.com/#!6/bcf65/4
但令人困惑的是,当我在 table 中插入数据时从未创建时,为什么我有 "space"。 例如从查询中查看这部分代码:
(SUBSTRING
(
[xml]
,CHARINDEX('P',[xml]) + 3
,LEN([xml])-8
)
在 SubString
函数中我必须删除一些 space 才能得到结果 LEN([xml])-8
.
让我们假设两种情况:(均来自SQL Fiddle插入查询)
我有一行数据
177PKR3572427992899
。它的总长度是'19'。所以在上面使用的 SubString 函数中,它的起始位置是7
,即数据中R
之后的3
并且要在跳过最后 2 位数字的同时获得它的长度,Len()
函数应该是Len(xml)-1
。但是,相反,我必须使用-8
来跳过最后 2 位数字。我真的很困惑,这个 space 是从哪里来的?现在让我们看第二个。我有一行数据
0PKR101
。它的总长度是'7'。所以在 SQL Fiddle 中的 SubString 函数中,它的起始位置是4
即1
在数据中的R
之后并在跳过最后 2 位数字的同时获取它的长度,Len()
函数应该是Len(xml)-1
。但是,我必须在这里使用-6
来跳过最后 2 位数字。我怎样才能让它像len(xml)-1
那样工作..
您忘记了您的“177PKR”
第三个参数是长度,从PKR之后开始
所以你的长度是 {total length} - 2 - ({index of P}+3)
,在第一种情况下等于 {total length} - 8
,在第二种情况下等于 {total length} - 6
。
这里有一个丰富多彩的解释:
当您想要从末尾开始的子字符串时,一般情况是:
substring(string, offset, length - offset - x)
其中 x
是您想要的距末尾的偏移量。