无效的长度参数传递到左侧或SUBSTRING函数

时间:2014-12-08 17:01:23

标签: sql sql-server-2008 tsql

我有一个addrLines字段格式为[Address] [City], [State] [Zip],另一个字段只有[city]数据,我试图从{[Address]部分中提取addrLines部分1}}字段。但是此查询返回无效长度参数错误。

SELECT LEFT(addrLines,(CHARINDEX(',',addrLines)-LEN(city))) 
FROM MyTable

有人能建议我做错了什么吗?谢谢!

3 个答案:

答案 0 :(得分:2)

这可能意味着您在addrLines中有一个条目,其中没有逗号或LEN(city)大于CHARINDEX(',',addrLines)。在其中任何一种情况下,CHARINDEX(',',addrLines)-LEN(city)函数都可能无法使用LEFT的负数。

答案 1 :(得分:0)

试试这个:

SELECT LEFT(addrLines,(CHARINDEX(',',addrLines + ',')-LEN(city))) 
FROM MyTable

答案 2 :(得分:0)

怎么样:

SELECT LEFT(addrLines,(CHARINDEX(city + ',',addrLines)-1)) 
FROM MyTable