SQL Server 2012の下でvarchar(10)をintに変換することはできますか?
varchar(10)
文字列がすべて数字で、文字列がint
の下限の範囲内であればはい、:つまり
-2^31 (-2,147,483,648) to 2^31-1 (2,147,483,647)
、これは動作します:
select cast('2147483647' as int)
このされません:
select cast('2147483648' as int)
は、私は、次のコードを試してみましたが、私は、それがテストしているあなたの問題のコードは、あなたが文字列を整数に変換できるかどうかをテストされていない
変換エラーを取得任意のランダムな文字列かどうかを変換することができます。ランダムな文字列にはアルファベットが含まれているため、整数に変換できないため、変換エラーが発生します。しかし、ランダムな文字列を数値に制限しても、int
をオーバーフローする前に数字列を2147483647
にしか変換できません。私は、この基準を満たす(そうではない)ランダムな文字列を生成することはそれほど証明できないとは思わない。あなたの質問への簡単な答えはyesです。文字列がintの要件を満たしていれば、文字列をintに変換できます。
'RIGHT(NEWID()、10)'は最高の偶然によって整数に過ぎません。あなたは*六角形を整数に変換することができましたが、この時点でそれを望む理由を説明するほうが良いでしょう。なぜなら、解決しようとしている問題(CRYPT_GEN_RANDOMのような)に対しては、 –
しかし、 'newid()'はあなたにアルファ数値のguidを与えます、なぜそれがintに変換されるのでしょうか? intにキャストしようとする前に、この行をコードに追加してください: 'SELECT @ Random'とあなたが変換しようとしているものを見てください。 – Tanner
'NEWID'は数字だけでなく文字を生成します。 – Sami