1. ホーム
  2. sql

[解決済み] データ型nvarcharをfloatに変換できないエラー

2022-02-17 09:30:18

質問

この素晴らしいフォーラムで検索したり、ググったりしましたが、解決できません。

2つのテーブルがあります(私はこれらのテーブルとは何の関係もありません)。どちらのテーブルにも eventId .

しかし、あるテーブルでは、データ型が eventIdfloat であり、もう一方のテーブルでは nvarchar .

から選択しています。 table1 ここで eventI は次のように定義されます。 float に保存し、そのIdを table2 ここで eventId は次のように定義されます。 nvarchar(50) .

データ型の不一致の結果、データ型変換のエラーが発生します。 nvarcharfloat .

データベースをいじらずに eventId を使用すると、このエラーを取り除くことができます。

以下のコードで何が間違っているのか、何か思い当たることはありますか?

SELECT 
    CAST(CAST(a.event_id AS NVARCHAR(50)) AS FLOAT) event_id_vre,

解決方法は?

この問題は、一部の行に event_id は空です。これを解決するには、2つの方法があります。

  • を変換して float から nvarchar というより、その逆 - この変換は必ず成功します。ここで唯一の問題は,テキスト表現が異なる場合です - たとえば,表が float -として nvarchar は小数点以下の桁数が少ないか
  • 変換前に空のIDをチェックする条件を追加する - イベント ID の一部が空でない文字列である場合、これは機能しないかもしれませんが、それらは float 変換可能でもありません (たとえば、フィールドに数値ではなく単語があるなど)。

2つ目の解決策は、次のようになります。

SELECT 
     case when a.eventid <> '' 
            then cast(cast(a.event_id as nvarchar(50)) as float) 
          ELSE 0.0 
     END AS event_id_vre,