2016-11-19 14 views
0
の挿入動的な列
set @v1 = "'city', 'ITY', 'age', '20'"; 
select @v1; 
insert into test values (11, 'hidy', column_create(@v1)); 

でMariaDBは、挿入物の形態で、この変数をサポートしていない、とmariaDB

client Error at)) 
MariaDB :10.1.19 
client :heidi 9.4.0.5130 
OS: Windows 10 

? JAVAでJDBCを使用してパラメータを渡したいので、

+0

フォーマットを改善する必要があります – Vickyexpert

答えて

0

INSERTにはプリペアドステートメントを使用できます。

MariaDB [test]> set @v1 = "'city', 'ITY', 'age', '20'"; 
Query OK, 0 rows affected (0.01 sec) 

MariaDB [test]> set @q = concat("insert into test values(11, 'hidy', column_create(",@v1,"))"); 
Query OK, 0 rows affected (0.00 sec) 

MariaDB [test]> select @q; 
+--------------------------------------------------------------------------------+ 
| @q                    | 
+--------------------------------------------------------------------------------+ 
| insert into test values(11, 'hidy', column_create('city', 'ITY', 'age', '20')) | 
+--------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

MariaDB [test]> prepare stmt from @q; 
Query OK, 0 rows affected (0.00 sec) 
Statement prepared 

MariaDB [test]> execute stmt; 
Query OK, 1 row affected (0.26 sec) 

MariaDB [test]> select column_get(b,'city' as char(8)) from test; 
+---------------------------------+ 
| column_get(b,'city' as char(8)) | 
+---------------------------------+ 
| ITY        | 
+---------------------------------+ 
1 row in set (0.00 sec) 
+0

ありがとうございます.JSONの値がMYSQLよりも難しくなります –