回答編集履歴

1

追記

2017/10/28 22:19

投稿

退会済みユーザー
test CHANGED
@@ -85,3 +85,55 @@
85
85
  +-----------+
86
86
 
87
87
  ```
88
+
89
+
90
+
91
+ ---
92
+
93
+ 追記:
94
+
95
+
96
+
97
+ > 公式ドキュメントに「結果が複数行となるような値は代入できない」と明記されてはいませんが、
98
+
99
+ 出来るとも書かれてない以上不可能なのですね。
100
+
101
+
102
+
103
+ MariaDBのドキュメントに記載があるかは見つけられていませんが、MySQLのリファレンスには下記の記載があります。
104
+
105
+ そのため、ユーザー定義変数では基本的に単一値のみを扱い、その値は基本的に文字列として取り扱われるものと思われます。
106
+
107
+
108
+
109
+ [MySQL :: MySQL 5.6 リファレンスマニュアル :: 9.4 ユーザー定義変数](https://dev.mysql.com/doc/refman/5.6/ja/user-variables.html)
110
+
111
+
112
+
113
+ > ユーザー変数には、限定された一連のデータ型の値 (整数、小数、浮動小数点、バイナリ文字列、非バイナリ文字列、または NULL 値) を割り当てることができます。
114
+
115
+ 10 進値と実数値の割り当てでは、値の精度やスケールは維持されません。
116
+
117
+ 許可されている型以外の型の値は、許可されている型に変換されます。
118
+
119
+ たとえば、時間を表すデータ型や空間データ型の値は、バイナリ文字列に変換されます。
120
+
121
+
122
+
123
+ > ユーザー変数に非バイナリ (文字) 文字列値を割り当てた場合、その変数には文字列と同じ文字セットと照合順序が含まれます。
124
+
125
+ ユーザー変数の強制性は暗黙的です。(これはテーブルカラム値と同等の強制性です。)
126
+
127
+
128
+
129
+ > ユーザー変数に割り当てられたビット値は、バイナリ文字列として扱われます。
130
+
131
+ ビット値を数値としてユーザー変数に割り当てるには、CAST() または +0 を使用します。
132
+
133
+
134
+
135
+ > 結果セットでユーザー変数の値が選択された場合、それは文字列としてクライアントに返されます。
136
+
137
+
138
+
139
+ > 初期化されていない変数を参照する場合、その値は NULL で、型は文字列です。