データをVarchar列から数値データ型に変換したいので、変換する
前にISNUMERIC関数を呼び出して、データが数値であるかどうかを確認し、そうである場合は数値データ型に変換します。しかし、私は問題に直面してい
ます-IsNumeric関数が期待どおりに動作していません-
- IsNumeric(x) returns true - when varchar value has both comma and a tab character (Char(9)),
- IsNumeric(x) returns false - when varchar value has only tab character and no comma
それは以下のSQLの助けを借りて説明されています-
DECLARE @propValue AS VARCHAR(50)
SET @propValue = '1,592 ' -- contains comma + tab (Char(9))
SELECT ISNUMERIC(@propValue) -- Returns 1
--If ISNUMERIC func returns true for this value, lets convert this Varchar value to Numeric
SELECT CAST(@propValue AS Numeric(19, 4)) -- :-( Error converting data type varchar to numeric.
私はグーグルで検索し、この問題に取り組むためのさまざまな解決策を見つけました-
--Solution 1: use 'e0'
SELECT ISNUMERIC(@propValue + 'e0') -- Returns 0
--Solution 2: remove comma before calling IsNumeric()
SELECT ISNUMERIC(REPLACE(@propValue, ',', '')) -- Returns 0
--Solution 3
--Call CLR function to parse Varchar value
上記のシナリオで推奨される解決策とその理由は何ですか?
また、IsNumeric(x)がfalseを返す理由を誰かが説明できれば本当にありがたいです-varchar値にタブ文字のみがあり、コンマがない場合はどうなりますか?
ありがとうございました!