Sybase IQ:将字符串转换为NUMERIC而不会出现错误/异常

时间:2011-09-21 08:57:12

标签: numeric sybase-iq

我正在使用Sybase IQ,需要将字段从字符串转换为NUMERIC。该字段有时具有除数字之外的字符。在这些情况下,我希望它返回0而不是引发异常。怎么做?

您可以查看下面的陈述以了解更多信息:

SELECT CONVERT(NUMERIC(10, 0), '');
SELECT CONVERT(NUMERIC(10, 0), '1');
SELECT CONVERT(NUMERIC(10, 0), 'a');
SELECT CONVERT(NUMERIC(10, 0), 'a1');
SELECT CONVERT(NUMERIC(10, 0), '1a');

只有前两行才有效。其余3行将引发例外情况:

Cannot covert a to a NUMERIC(10, 0)(07006,-157)

提前致谢!

1 个答案:

答案 0 :(得分:2)

我不确定是否有更好的方法,但你可以试试这个。

SELECT CASE PATINDEX('%[a-zA-Z]%','') 
   WHEN 0 THEN CONVERT(NUMERIC(10,0), '') 
   ELSE 0 END
SELECT CASE PATINDEX('%[a-zA-Z]%','1') 
   WHEN 0 THEN CONVERT(NUMERIC(10, 0), '1') 
   ELSE 0 END
SELECT CASE PATINDEX('%[a-zA-Z]%','a') 
   WHEN 0 THEN CONVERT(NUMERIC(10, 0), 'a') 
   ELSE 0 END
SELECT CASE PATINDEX('%[a-zA-Z]%','1a') 
   WHEN 0 THEN CONVERT(NUMERIC(10, 0), '1a') 
   ELSE 0 END
SELECT CASE PATINDEX('%[a-zA-Z]%','a1') 
   WHEN 0 THEN CONVERT(NUMERIC(10, 0), 'a1') 
   ELSE 0 END

希望有所帮助:)