MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで変数の型を取得する方法は?CAST演算子を使った型変換の基本

MySQLでは変数の型を直接取得できない

MySQLには、変数に格納された値の「型」そのものを取得する機能はありません。ユーザー定義変数(@変数)は値に応じて動的に型が決まるため、代わりにCAST演算子を使って、値を別の型へ明示的に変換するのが一般的な方法です。

変数への値の代入方法

まず、SET文を使ってユーザー定義変数に値を代入します。構文は以下の通りです。

SET @yourVariableName := 'anyValue';

CAST演算子による型変換の構文

CAST演算子を使うことで、変数の値を指定した型に変換できます。

SELECT CAST(@yourVariableName AS SIGNED);

それでは、実際の使用例をケースごとに見ていきましょう。

ケース1:文字列から符号なし整数(UNSIGNED)への変換

まず、文字列の値を変数に代入します。

mysql> SET @StringToInt := '12345';
Query OK, 0 rows affected (0.00 sec)

次に、CAST演算子でUNSIGNED型に変換して表示します。

mysql> SELECT CAST(@StringToInt AS UNSIGNED);

実行結果は以下の通りです。

+--------------------------------+
| CAST(@StringToInt as UNSIGNED) |
+--------------------------------+
| 12345 |
+--------------------------------+
1 row in set (0.00 sec)

文字列 '12345' が数値 12345 として正しく変換されました。

ケース2:整数から文字列(CHAR)への変換

今度は逆に、数値を文字列に変換してみます。

mysql> SET @IntTochar := CAST(65 AS CHAR);
Query OK, 0 rows affected (0.00 sec)

変数の中身を確認します。

mysql> SELECT @IntTochar;

実行結果:

+------------+
| @IntTochar |
+------------+
| 65 |
+------------+
1 row in set (0.00 sec)

CASTで指定できる主な型

CAST演算子の変換先として指定できる主な型は以下の通りです。

  • SIGNED / UNSIGNED:符号あり・なしの整数
  • CHAR:文字列
  • DATE / DATETIME:日付・日時
  • DECIMAL(M, D):固定小数点数
  • BINARY:バイナリ文字列
  • JSON:JSON形式(MySQL 5.7以降)

まとめ

MySQLでは変数の型を直接調べることはできませんが、CAST演算子を使えば文字列から数値、数値から文字列など、任意の型へ柔軟に変換できます。データの整形や集計処理の場面で非常に役立つ機能なので、ぜひ活用してください。

  1. MySQLで選択した行のサイズを取得する方法|CHAR_LENGTH()関数の使い方

    MySQLで選択した行のサイズを取得する方法MySQLで選択した行のサイズ(文字数)を取得するには、CHAR_LENGTH()関数を使用します。この関数は文字列の長さを返すため、SUM()関数と組み合わせることで、複数行にわたる合計サイズを簡単に算出できます。ここでは、実際にテーブルを作成しながら手順を詳しく解説していきます。ステップ1:テーブルを作成するまず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1612    -> (    -> Fi

  2. SQLのユーザー定義変数を使って最大試験日を取得する方法

    MySQLでは、ユーザー定義変数とSELECT ... INTO構文を組み合わせることで、テーブル内の最大試験日を変数に格納できます。基本となる構文は以下のとおりです。select date(max(yourColumnName)) into @yourVariableName from yourTableName;この構文を実際に理解するために、まずサンプルテーブルを作成していきましょう。テーブルの作成試験日を格納するテーブル「DemoTable2001」を作成します。mysql> create table DemoTable2001 ( ExamDate date ); Qu