私は、より大きなサイズのデータ型から小さなサイズのデータ型に変換するのは、あまりにも危険で危険なことを知っています。ただし、この場合、BIGINT UNSIGNED
列の値がINT
列の最大サイズより大きくなることはほとんどありません。BIGINT UNSIGNEDをINTに変換する
したがって、MySQLを使用して、私はテーブル構造を読んでいます。 information_schema.columns.ordinal_position
コラムを読んでいるうちに、そのタイプがBIGINT UNSIGNED
であることに気付きました。さて、私はこれを私の処理目的の代わりにINT
としたいと思います。私はキャストしたい/ SQLの型を変換します。
CAST
およびCONVERT
は明らかにデータ型の符号を変更することができます。
SELECT CAST(ordinal_position AS SIGNED)
FROM information_schema.columns
具体的にはINT
として返されます。例えば。列を最大値のINT
にチョップし、その値を返します。
今のところ、私は値を戻した後にデータ型を変更します。しかし、私はSQLでそれを行う方法を知りたいです。
Create the function that will perform the conversion:
CREATE FUNCTION BigToInt (n BIGINT) RETURNS INTEGER RETURN n;
As you can see, the function is very short and simple: It takes a BIGINT and immediately returns it as an ordinary integer. However, one consequence of this is that some of the data will be truncated down to the largest possible value for Int.
( - あなたはまだあなたがすでにそれは符号なしの部分を削除していたキャストとそれを組み合わせることができない場合は、おそらくあなたは、署名に「UNSIGNED」を追加することができます):
機能を作成せずに行う方法はありますか?使用後に機能を解体することを忘れないようにすることは厄介です。 – Pacerier