1

こんにちは、ストアドプロシージャで数値のみであることを確認したい値があります。次のコードがあります

 if (IsNumeric(myField) =0)
 begin
   --does some work
 end;

数値が数値でない場合は myField をチェックする必要があります。そうでない場合は機能します。何らかの理由で、上記のコードはエラーをスローしています。それを修正する方法はありますか。エラーは、例外が varchar から int にスローされたことです。教えてください ありがとう

4

3 に答える 3

3

他の人が指摘しているようisnumeric()に、文字列を変換できない場合は 1 を返します。

次の正の整数のテスト:

where myfield not like '%[^0-9]%'

次の例では、正の整数または浮動小数点数をテストします。

where myfield not like  '%[^0-9.]%' and myfield not like '%.%.%'

注意として、これらのメソッドはいずれも数値オーバーフローをテストしません。次のようなものでそれをテストできます。

where myfield not like '%[^0-9]%' and len(myfield) <= 10 and myfield <= '2147483647'

(先頭に 0 がないことを前提としています)。

于 2013-08-25T11:34:18.817 に答える