Sql 传递给Left或SUBSTRING函数的长度参数无效
我有一个Sql 传递给Left或SUBSTRING函数的长度参数无效,sql,sql-server-2008,tsql,Sql,Sql Server 2008,Tsql,我有一个addrLines字段,格式像[Address][City],[State][Zip],另一个字段只有[City]数据,我正试图从addrLines字段中提取[Address]部分。但此查询返回无效的长度参数错误 SELECT LEFT(addrLines,(CHARINDEX(',',addrLines)-LEN(city))) FROM MyTable 有人能告诉我我做错了什么吗?谢谢大家! 这可能意味着您在addrLines中有一个条目没有逗号,或者LEN(city)大于CHA
addrLines
字段,格式像[Address][City],[State][Zip]
,另一个字段只有[City]
数据,我正试图从addrLines
字段中提取[Address]
部分。但此查询返回无效的长度参数错误
SELECT LEFT(addrLines,(CHARINDEX(',',addrLines)-LEN(city)))
FROM MyTable
有人能告诉我我做错了什么吗?谢谢大家! 这可能意味着您在
addrLines
中有一个条目没有逗号,或者LEN(city)
大于CHARINDEX(',',,addrLines)
。在这两种情况中的任何一种情况下,CHARINDEX(',',addrLines)-LEN(city)
,您可能会得到一个负数,而左侧的
函数无法使用该负数。尝试以下操作:
SELECT LEFT(addrLines,(CHARINDEX(',',addrLines + ',')-LEN(city)))
FROM MyTable
那么:
SELECT LEFT(addrLines,(CHARINDEX(city + ',',addrLines)-1))
FROM MyTable
这绝对是个问题。。。回到绘图板,了解如何提取地址字符串