前提・実現したいこと
あるテーブルのカラムをint型で比較を行い、出力したい。
比較したいテーブルのカラムの型はvarcharである。
発生している問題・エラーメッセージ
varchar の値 '20200000000000' の変換が int 型の列でオーバーフローしました。
該当のソースコード
sql
1alter table aaaaa alter column xxxxyyzzaabbcc int 2DECLARE @xxx varchar(100) = 202000; 3DECLARE @yyy int; 4SET @xxx = @xxx +'00000000'; 5print @xxx; 6set @yyy = CONVERT(int,@xxx);
試したこと
intを使用せずにvarcharで行った。データが多すぎて正解かどうかわからなかった。
データが多すぎてというのは、テーブルのデータ(行)が多いため「文字列の大小比較は辞書式順序に従う」とあったことの確認ができませんでした。
調べた結果、文字列の大小比較は辞書式順序に従うとあったため数値型にした方が確実だと思い数値型にしたい。
補足情報(FW/ツールのバージョンなど)
SQLServer2017を使用
>データが多すぎて正解かどうかわからなかった。
何の話でしょうか。もう少し具体的に提示してください。
あと、元々文字列の型と数値を比較するのはあまり良い手とは言えません。
元の型を文字列ではなく数値にされたほうが良いのでは?
一応、「数値系の型が扱える値の幅」は知っておいた方が良いです。
https://johobase.com/sqlserver-numeric-data-range/
データが多すぎてというのは、テーブルのデータ(行)が多いため「文字列の大小比較は辞書式順序に従う」とあったことの確認ができませんでした。
元の文字列は alter ... で数値型に変換していると思います。
テーブルから結果を出力するための、SELECT以降を書いていなかったため分かりにくくなってしまい申し訳ありません。
型の種類の知識がありませんでした。
参照URLありがとうございます。
回答1件
あなたの回答
tips
プレビュー