我试图将此查询从Access数据库转换为在SQL Server 2008中工作,并陷入困境。我知道存在差异,但我不确定发生了什么,显然我不擅长这一点。 任何帮助,将不胜感激。访问查询与SQL Server 2008查询
访问
Mid(Trim([SC01039]),
InStrRev(Trim([SC01039])," ")+3,4)
AS ProductType
SQL Server 2008的(这是我试图改变它)
Substring(RTrim(LTrim([SC01039])),
Right(RTrim(LTrim([SC01039])),
CHARINDEX(' ',RTrim(LTrim([SC01039]))))+3,4)
AS ProductType
我收到的错误是
“转换失败当转换nvarchar值'L318'到数据 int类型“。
为什么它试图将结果文本转换为整数?我的假设是查询说:“找到最接近字符串右边的空间位置,现在将3加到该位置,并给我接下来的4个字符。”这似乎是与数据,而不是查询(如果没有空间?还是字符串为空它能做什么?)我不知道一个问题...
难道我连亲近? :P
有在SC01039混合字符,但是这是一个样本:
SC01039 : Expected Output
------------- : ---------------
QC 06999911 : 9999
SW 12FMT116 : FMT1
26RMF399 : RMF3
08 : [empty]
[empty] : [empty]
显然它始终是4个字符,起始物为3-到找到的第一个空间的右侧(搜索从右侧的空间-向左)。 SC01039中的一些数据具有多个空格(即:09 TVR 012 2,在这种情况下,它不返回任何内容,我相信这是可以的)。
显示数据。目前在'SC01039'列'Charindex'部分出了问题 –
感谢您的帮助;) –