Sql 当传递没有度量单位的字段名值时,它会给出错误,那么如何解决呢?
我正在处理SQL Server 2012查询-我收到一个错误: 传递给LEFT或SUBSTRING函数的长度参数无效 代码: 我有一个列Sql 当传递没有度量单位的字段名值时,它会给出错误,那么如何解决呢?,sql,sql-server,tsql,stored-procedures,sql-server-2012,Sql,Sql Server,Tsql,Stored Procedures,Sql Server 2012,我正在处理SQL Server 2012查询-我收到一个错误: 传递给LEFT或SUBSTRING函数的长度参数无效 代码: 我有一个列阻抗,例如50kg。它将此值拆分为50和kg,没有任何问题 如果列仅包含50,而没有任何度量单位,则会出现问题 在这种情况下,我得到一个错误: 传递给左字符串或子字符串函数的长度参数无效 请问如何解决这个错误 总结一下我的问题:当列阻抗只有一个数字时,如50,如何处理错误,才能在不引起错误的情况下工作 50kg可以正常工作 50导致错误 更新:对于计量单位为
阻抗
,例如50kg
。它将此值拆分为50
和kg
,没有任何问题
如果列仅包含50
,而没有任何度量单位,则会出现问题
在这种情况下,我得到一个错误:
传递给左字符串或子字符串函数的长度参数无效
请问如何解决这个错误
总结一下我的问题:当列阻抗
只有一个数字时,如50
,如何处理错误,才能在不引起错误的情况下工作
可以正常工作50kg
导致错误50
50kg
的数字,我没有任何问题,我只有一个没有计量单位的数字,例如50
,才有问题
这是我下面需要解决的问题
SELECT
Impedacte = (CASE
WHEN PATINDEX('%[^0-9.]%', '50') > 0
THEN LEFT('50', PATINDEX('%[^0-9.]%', '50') - 1)
ELSE '50'
END),
ImpedanceUnits = (CASE
WHEN PATINDEX('%[^0-9.]%', '50') > 0
THEN RIGHT('50', (LEN('50') - PATINDEX('%[^0-9.]%', '50') + 1))
ELSE NULL
END)
只需添加一个额外字符,以便
PATINDEX()
返回一个适当的值:
LEFT([Impedance], PATINDEX('%[^0-9.]%', [Impedance] + ' ') - 1) AS [Impedance],
请看这个。对不起,我不需要我有问题,当我通过的数字只有50,但当数字与计量单位为50kg没有任何问题
LEFT([Impedance], PATINDEX('%[^0-9.]%', [Impedance] + ' ') - 1) AS [Impedance],