【问题标题】:SQL error "Invalid length parameter passed to the LEFT or SUBSTRING function"SQL 错误“传递给 LEFT 或 SUBSTRING 函数的长度参数无效”
【发布时间】:2014-10-09 13:35:02
【问题描述】:

我收到 sql 错误

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

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

我们从 Feed 中获得的证券的优秀股票价值。例如,195461597.62 M 之类的值,我们将删除 .62 M 并乘以 1000,但具有 14 个或更多字符的值返回传递给 LEFT 或 SUBSTRING 函数的长度参数无效 错误,但如果我从值中删除一个字符,它运行正常。

此字段设置为 100 的 DATA_LENGTH 和显示值的前端应用程序设置为 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

感谢任何帮助。

【问题讨论】:

  • 将 1 传递给子字符串而不是 0

标签: sql-server-2008


【解决方案1】:

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

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

【讨论】:

  • 我不认为小数是问题,而是总长度。由于检索到的所有数据都以 .XX M 结尾,我们正在修剪最后 5 个字符,包括小数点。仅当剩余字符数为 9 个或更多时才会发生错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 2019-08-30
  • 2013-01-11
相关资源
最近更新 更多