T-SQL での Float から Nvarchar への確実な変換
今週、非 GUID ID 値を含む分析プロセスのバックフィル データを作成するという興味深い問題に遭遇しました.データは処理され、Microsoft SQL Server データベースに保存されます.これらの ID 値は、最終的に ETL 処理でデータ型
ソース データは、SQL Server Management Studio の標準の [タスク] オプションから項目をインポートしてインポートした Excel スプレッドシートでした.インポート後にデータを調べたところ、期待どおりの値が表示されました.
データに必要な変換に関する開発を完了しました.最終テーブルを必要に応じて各サーバーにエクスポートする予定だったので、最終一時テーブルに
最終的に、これらの値は傾向と予測のために視覚化ツールに集約されます.これらの値は、テーブルに既にある値と正確には一致しません.
これでも、科学表記法の値が得られました.
SQL Server が ID 値を
最初に
nvarchar
として使用される 8 文字の数字です.ソース データは、SQL Server Management Studio の標準の [タスク] オプションから項目をインポートしてインポートした Excel スプレッドシートでした.インポート後にデータを調べたところ、期待どおりの値が表示されました.
データに必要な変換に関する開発を完了しました.最終テーブルを必要に応じて各サーバーにエクスポートする予定だったので、最終一時テーブルに
INTO <schema.table>
ステートメントを追加して、データの永続テーブルを作成しました. QA にデータを返したとき、ID 値が科学表記になっていることに気付きました.最終的に、これらの値は傾向と予測のために視覚化ツールに集約されます.これらの値は、テーブルに既にある値と正確には一致しません.
INTO
ステートメントから作成されたテーブルを確認すると、ID 列が float として変換されていることがわかりました.データ型を nvarchar
に変更し、INSERT
ステートメントに単純な変換を追加して解決しました.SELECT CONVERT(nvarchar,@IDValue) As IdValue
これでも、科学表記法の値が得られました.
SQL Server が ID 値を
float
として識別していたという事実を突き止めることで、値の nvarchar
への変換が完全かつ正確であることを保証する T-SQL のソリューションを見つけました.SELECT CONVERT(nvarchar,CONVERT(bigint,@IDValue)) As IDValue
最初に
float
値を bigint
に変換すると、実際の値が保持されます.結果の bigint
値をさらに nvarchar
に変換すると、明示的なデータ型を介してテーブルにスムーズに挿入されます.この修正された変換により、作業を完了するために必要なバックフィル テーブルの構築を完了することができました.Reference
この問題について(T-SQL での Float から Nvarchar への確実な変換), 我々は、より多くの情報をここで見つけました https://dev.to/kristenkinnearohlmann/ensuring-conversion-of-a-float-to-nvarchar-in-t-sql-1n8pテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol