- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:#ワークテーブルにinsert時 変換エラー)
ワークテーブルにinsert時 変換エラー
このQ&Aのポイント
- ワークテーブルにinsertする際に、特定の条件で変換エラーが発生します。具体的には、b列の値が10桁以上の数値の場合にエラーが発生します。
- 文字列'9999999999'を直接渡す場合は正常にワークテーブルに書き込まれますが、b列の値が変数から取得された場合にエラーが発生します。
- なぜ10桁以上の数値が変換エラーとなるのか、解決策があれば教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
当方SQLServerとかやったことありませんが聞きかじりで > ISNUMERIC(b) ISNUMERIC(cast(b as bigint)) たぶん精度オーバーのように見えます。 詳しくはcastかconvert関数? を見てみると幸せになれるかも。
お礼
HowOverさん アドバイスありがとうございました。 ISNUMERIC(b) の部分では正常に行われていたのですが、どうやら else 0 の 「0」 が1レコード目に存在する場合、ワークテーブル定義をシステムが勝手にint型と判断してワークテーブルを作成するようです。よって、そのint型に型オーバー値を入れる事になるのでこう言う現象になるです。 ISNUMERIC(cast (b as decimal)) = 1 THEN b ELSE cast(0 as decimal) END AS b とすれば、上手く行きました。 おっしゃる様に型の宣言はきっちり定義した方が、幸せに(^^なれそうですね。 有難う御座いました。