我正在使用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)
提前致谢!
答案 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
希望有所帮助:)