1. ホーム
  2. sql

[解決済み] SQLでnvarcharをfloatに変換する

2022-02-07 15:56:58

質問

テーブルとカラム Quantity 元のテーブルでは、このカラムは次のように定義されています。 nvarchar(100) ということで、分析するためにfloatにキャストする必要があります。

CAST([Quantity] AS FLOAT) AS Quantity      

問題は、以下のような浮動小数点に変換できない値があることです。 No-Quantity , Return などです。これらの値を除外して、残りをfloatに変換するフィルタが欲しいのですが、オプションとしてwhere節を使用することができます。

WHERE Quantity IN ('Return', 'Sales')

もし、元のテーブルに新しい値があれば、それが何であるかを調べて、where節に追加する必要があるからです。

変換できない値を識別する良い方法はないでしょうか?

どのように解決するのですか?

どのデータベースでも cast() とこんな感じです。

(case when quantity not in ('No-Quantity', 'Return', . . .)
      then CAST([Quantity] as float)
 end) as Quantity  

in のリストは、既知の文字列値のリストとなる。

また、このような簡易的なチェックも可能です。

(case when left(quantity, 1) between '0' and '1'
      then CAST([Quantity] as float)
 end) as Quantity   

(注意) substr() または substring() ではなく left() .)

そして、一般的に、どんな特定のデータベースでも、変換を助けることができる特定の関数を持っています、例えば try_convert() というコメントで紹介されています。