Sql server 2008 SQL错误“传递给LEFT或SUBSTRING函数的长度参数无效”

Sql server 2008 SQL错误“传递给LEFT或SUBSTRING函数的长度参数无效”,sql-server-2008,Sql Server 2008,我得到了一个sql错误 传递给LEFT或SUBSTRING函数的长度参数无效 它似乎来自返回的值,长度为14个字符 我们从feed中获得的证券的流通股价值。例如,一个值,如195461597.62 M,我们正在修剪.62 M并乘以1000,但是包含14个或更多字符的值返回传递给LEFT或SUBSTRING函数错误的无效长度参数,但是如果我从值中删除一个字符,它将正常运行 此字段设置为数据长度为100,而显示值的前端应用程序设置为30个字符,因此不确定告诉我什么错误 以下是我的SQL: selec

我得到了一个sql错误

传递给LEFT或SUBSTRING函数的长度参数无效

它似乎来自返回的值,长度为14个字符

我们从feed中获得的证券的流通股价值。例如,一个值,如195461597.62 M,我们正在修剪.62 M并乘以1000,但是包含14个或更多字符的值返回传递给LEFT或SUBSTRING函数错误的无效长度参数,但是如果我从值中删除一个字符,它将正常运行

此字段设置为数据长度为100,而显示值的前端应用程序设置为30个字符,因此不确定告诉我什么错误

以下是我的SQL:

select udf_char15, (convert(int,(substring(ltrim(rtrim(UDF_CHAR15)),0,len(UDF_CHAR15) - 5)))*1000)
from CSM_SECURITY_CUST
Where UDF_CHAR15 is not null

感谢您的帮助

可以使用小数点的位置使其长度不可知

select cast(left(UDF_CHAR15, charindex('.', UDF_CHAR15) - 1) as int)

将1传递给子字符串不是0我认为小数点不是问题,而是总长度。由于检索到的所有数据都以.XX M结尾,因此我们将删除最后5个字符,包括小数。仅当剩余9个或更多字符时,才会发生错误。