#TINYINT |
1 バイトの符号付き整数 |
SMALLINT |
2 バイトの符号付き整数 |
MEDIUMINT |
3 バイト符号付き整数 |
#INT |
4 バイト符号付き整数 |
#BIGINT |
8 バイト符号付き整数 |
##FLOAT | 単精度浮動小数点数 |
#DOUBLE
倍精度浮動小数点数 |
|
DECIMAL
固定精度10進数 |
|
上記の表では、整数型はデータの格納にそれぞれ 1、2、3、4、および 8 バイトを使用し、浮動小数点型はデータの格納にそれぞれ 4 と 8 バイトを使用し、DECIMAL 型は 4 ~ 65 を使用します。セクションは、データを保存するための記憶領域が異なります。特定の記憶領域は、列定義で設定された小数点の数によって異なります。
次に、MySQL での数値型変換の一般的なシナリオについて説明します。
- 文字列を数値型に変換する
多くの場合、次に、ユーザーが入力した文字列を数値に変換して計算するなど、データベースに保存されている文字列を数値型に変換する必要があります。 MySQL では、CAST、CONVERT、または operator を使用して文字列を数値型に変換できます。
まず、CAST関数の使い方を見てみましょう。 CAST 関数は 2 つのパラメータを受け入れます。最初のパラメータは型変換する必要がある値で、2 番目のパラメータは変換する必要があるターゲット データ型です。たとえば、文字列 '123' を INT 型に変換するには、次のステートメントを使用できます。
SELECT CAST('123' AS INT);
文字列をターゲット データ型に変換できない場合は、NULL 値が返されます。
次に、CONVERT 関数の使用法を見てみましょう。 CONVERT 関数は 2 つのパラメーターも受け入れます。最初のパラメーターは型変換する必要がある値で、2 番目のパラメーターは変換する必要のあるターゲット データ型です。たとえば、文字列 '123' を DOUBLE 型に変換するには、次のステートメントを使用できます。
SELECT CONVERT('123', DOUBLE);
ここでは、ターゲット データ型は引用符で囲まれていませんが、SQL ステートメントに直接記述されています。 。文字列をターゲットのデータ型に変換できない場合は、0 が返されます。
最後に、operator を使用した型変換の使用法を見てみましょう。文字列を数値型に変換する場合、文字列とデータ型を追加できます。例:
SELECT '123' + 0;
ここでは、数値 0 に文字列 '123' を追加します。MySQL は自動的にその文字列を追加します。 「123」は数値型 123 に変換されます。
- 数値型を文字列型に変換する
多くの場合、数値をパラメーターとしてストレージ プロシージャまたは関数に渡すなど、数値型を文字列型に変換する必要があります。 MySQL では、CAST 関数または CONVERT 関数を使用して数値型を文字列型に変換できます。
まず、CAST関数の使い方を見てみましょう。 CAST 関数は 2 つのパラメータを受け入れます。最初のパラメータは型変換する必要がある値で、2 番目のパラメータは変換する必要があるターゲット データ型です。たとえば、数値 123 を文字列型に変換するには、次のステートメントを使用できます。
SELECT CAST(123 AS CHAR);
ここでは、数値 123 を CHAR 型の文字列に変換します。
次に、CONVERT 関数の使用法を見てみましょう。 CONVERT 関数は 2 つのパラメーターも受け入れます。最初のパラメーターは型変換する必要がある値で、2 番目のパラメーターは変換する必要のあるターゲット データ型です。たとえば、数値 123 を文字列型に変換するには、次のステートメントを使用できます。
SELECT CONVERT(123, CHAR);
ここでは、数値 123 を CHAR 型の文字列に変換します。
- データインポート時の数値型変換
データをインポートする際、ソースデータはCSVファイルやExcelファイルに保存されていることが多く、これらのファイル内のデータは多くの場合、文字列の形式で保存されます。データを MySQL にインポートする場合、これらの文字列データを MySQL でサポートされている数値データ型に変換する必要があります。
たとえば、MySQL の LOAD DATA INFILE コマンドを使用してデータをインポートする場合、SET 句を使用して各カラムのデータ型を指定できます。たとえば、次のデータを含むsample.csvという名前のファイルがあるとします:
"1001","John","Doe","30"
"1002","Jane","Doe","25"
次のコマンドを使用して、sales tableという名前のMySQLデータベースにデータをインポートできます:
LOAD DATA INFILE 'sample.csv'
INTO TABLE sales
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(@col1, @col2, @col3, @col4)
SET
id = CAST(@col1 AS INT),
first_name = @col2,
last_name = @col3,
age = CAST(@col4 AS INT)
;
ここでは、CAST 関数を使用して @col1 と @col4 を INT 型の数値に変換し、その値を id 列と age 列に挿入します。 first_name と last_name は文字列型の列であるため、型変換を行う必要はありません。
もちろん、CAST 関数に加えて、CONVERT 関数または operator を使用して、データのインポート時に数値型の変換を実行することもできます。
要約すると、MySQL で数値型の変換を実行する必要がある場合は、CAST、CONVERT、または operator を使用できます。データをインポートするとき、SET 句を使用して各列のデータ型を指定することもできます。これらの方法をマスターすることで、数値型データをより柔軟に処理し、ビジネス ニーズに適応させることができます。