PRINT CONVERT(NUMERIC(18,0), '')
を生成します Error converting data type varchar to numeric.
でも、
PRINT CONVERT(INT, '')
0
エラーなしで生成 します。
質問:これにはSQL Serverフラグがありますか、それともすべてのvarcharから数値への変換に対してcaseステートメントを実行する必要がありますか?(明らかな理由は別として?)
PRINT CONVERT(NUMERIC(18,0), '')
を生成します Error converting data type varchar to numeric.
でも、
PRINT CONVERT(INT, '')
0
エラーなしで生成 します。
質問:これにはSQL Serverフラグがありますか、それともすべてのvarcharから数値への変換に対してcaseステートメントを実行する必要がありますか?(明らかな理由は別として?)
ISNUMERICを使用する
declare @a varchar(20)
set @a = 'notanumber'
select case when isnumeric(@a) = 0 then 0 else convert(numeric(18,0),@a) end
空の文字列は、float型とint型ではゼロに変換されますが、10進数では変換されません。(そして、日時=ゼロの場合は1900年1月1日に変換されます)。理由はわかりません..それは...
decimal(18,0)が必要な場合は、代わりにbigintを使用してください。または最初にフロート経由でキャスト
ISNUMERICは-
and.
を1.2E3
数値として受け入れますが、すべて10進数に変換できません。
ISNUMERICは、期待どおりに機能するとは限りません。特に、後で数値に変換できない値についてはTrueを返します。
この記事では、この問題について説明し、UDFでこの問題を回避する方法を提案します。