Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 传递给Left或SUBSTRING函数的长度参数无效_Sql_Sql Server 2008_Tsql - Fatal编程技术网

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

这绝对是个问题。。。回到绘图板,了解如何提取地址字符串