Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 当传递没有度量单位的字段名值时,它会给出错误,那么如何解决呢?_Sql_Sql Server_Tsql_Stored Procedures_Sql Server 2012 - Fatal编程技术网

Sql 当传递没有度量单位的字段名值时,它会给出错误,那么如何解决呢?

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导致错误 更新:对于计量单位为

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

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

代码:

我有一个列
阻抗
,例如
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],