[解決済み] varchar を numeric データ型に変換する際の算術オーバーフローエラーです。'10' <= 9.00
2022-03-07 14:21:49
質問
以下は、私が扱っているテーブル構造とデータの種類を示すサブセットです。
CREATE TABLE #Test
(
Val varchar(5)
,Type varchar(5)
)
INSERT #Test VALUES ('Yes','Text')
INSERT #Test VALUES ('10','Int')
INSERT #Test VALUES ('10.00','Float')
INSERT #Test VALUES ('9.00','Float')
INSERT #Test VALUES ('9','Int')
列 'Val' が <= 9.00 (数値データ型でなければならない) であるかどうかを知らせるクエリを書きたいのです。私は次のようにしてこれを行いました。
SELECT *
FROM
(
SELECT Val
FROM #Test
WHERE Type = 'Int'
) IntsOnly
WHERE IntsOnly.Val <= 9.00
これでは算術オーバーフローエラーが発生します。しかし、値「10」のデータ行を除外すると
SELECT *
FROM
(
SELECT Val
FROM #Test
WHERE Type = 'Int'
AND Val <> '10'
) IntsOnly
WHERE IntsOnly.Val <= 9.00
問題なく動作しています。 私の質問は、単に私が必要とする形式にデータを変換することができることを知っているので、これを修正する方法ではない。
私の質問は、列 'Val' の値 '10' がなぜエラーを返しているのかということです。確かにロジックは 'False' を返して、'10' (暗黙のうちに変換されていると思いますが) が 9.00 より大きいので行を除外するだけでよいのですが。
ありがとうございます。
解決方法は?
を暗黙のうちにキャストしようとしているため、算術オーバーフローを発生させます。
Val
カラムをNUMERIC(3,2)に変換するのですが、当然10などの2桁の値ではオーバーフローしてしまいます。
NUMERIC(3,2)をターゲット型とサイズとして使用しているのは、NUMERIC(3,2)が最も小さい数値であるためです。
9.00
に収まるように見える。
もちろん、解決策は、暗黙のうちに行うのではなく、明示的なCASTを使用することです。
関連
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しない
-
[解決済み】2つの列を分割する方法は?
-
[解決済み] mongoの外部キー?
-
[解決済み] ORA-01735: 無効な ALTER TABLE オプション - ヒキガエル
-
[解決済み] 検索エラー ORA-00932: 不整合なデータ型: 期待された DATE は NUMBER になりました。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] Sql Server 'Saving changes is not permitted' エラー ► テーブルの再作成を必要とする変更を保存しないようにする。
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] T-SQLでテーブル変数をSELECT INTOする
-
[解決済み] INTからVARCHARへの変換 SQL
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ストアドプロシージャーのエラー ORA-06550
-
[解決済み] varchar データ型から datetime データ型に変換すると、SQL クエリで範囲外の値が発生する
-
[解決済み】一括読み込みデータ変換エラー(指定されたコードページに対して型の不一致または無効な文字)1行目4列目(年)について)
-
[解決済み】警告。Aqua Data Studioの集約や他のSET操作でNull値が排除される。
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] INSERT ステートメントが FOREIGN KEY 制約と競合する - SQL Server
-
[解決済み] ORA-00918: 列があいまいに定義されています」を解決する方法
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] ORA-01821: ISO 8601 のローカルタイム付き日付のフォーマットが認識されないエラー
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない