当传递没有计量单位的字段名称的值时会报错,如何解决?

When pass value of field name without unit of measure it give error so How to solve?

我处理 SQL Server 2012 查询 - 我收到一个错误:

Invalid length parameter passed to the LEFT or SUBSTRING function.

代码:

SELECT  
    LEFT([Impedance], PATINDEX('%[^0-9.]%', [Impedance]) - 1) AS [Impedance],
    RIGHT([Impedance], LEN([Impedance]) - PATINDEX('%[^0-9.]%', [Impedance]) + 1) AS [ImpedanceUnits] 
FROM
    ##NewTable0

我有一个列 Impedance,其值例如 50kg。它将此值拆分为 50kg 没有任何问题。

当该列仅包含 50,没有任何度量单位时出现问题。

在这种情况下,我得到一个错误:

Invalid length parameter passed to the LEFT or SUB STRING function.

请问如何解决这个错误?

总结一下我的问题:当第 impedance 列只有数字时如何处理错误,例如 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() returns 成为一个合适的值:

LEFT([Impedance], PATINDEX('%[^0-9.]%', [Impedance] + ' ') - 1) AS [Impedance],