Sql数据右边不需要的空间
问题描述:
这是我的Sql小提琴与模式和数据。我写的SQL查询工作正常,并返回数据。Sql数据右边不需要的空间
http://sqlfiddle.com/#!6/bcf65/4
但困惑是为什么我有当我同时在表插入数据从未创建“空间”。 对于示例View从查询这部分代码:
(SUBSTRING
(
[xml]
,CHARINDEX('P',[xml]) + 3
,LEN([xml])-8
)
在SubString
功能我不得不删除一些空间来获得结果LEN([xml])-8
。
假设两种情况:(两者都是从SQL小提琴插入查询)
我有数据
177PKR3572427992899
一行。它的总长度是'19'。因此,在上面使用的SubString函数中,其起始位置是7
,即3
在Data中的R
之后,并且在跳过最后2位数时获得其长度,Len()
函数应该是Len(xml)-1
。但是,我必须使用-8
来跳过最后2位数字。对于我来说,这个空间从哪里来?现在让我们看看第二个。我有一行数据
0PKR101
。它的总长度是'7'。因此,在SQL Fiddle中的SubString函数中,它的起始位置是4
,即在Data中的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
是偏移量要从结束。
我很好奇:你为什么要调用你的列'[xml]',这样标记问题,但我看不到任何XML相关的东西? – Shnugo
@Shnugo对不起,删除了XML标签。那么,这些值从xml文件中提取到列中,所以是... – ARr0w