0
是否有可能一个JSON列表字段中MariaDB的取样类似的存储低于使用动态列的MariaDB的SQL INSERT语句:如何JSON数据与表转换成使用动态列
{
"myfield": "value1",
"myList": ["item1" , "item2", "item3"]
}
是否有可能一个JSON列表字段中MariaDB的取样类似的存储低于使用动态列的MariaDB的SQL INSERT语句:如何JSON数据与表转换成使用动态列
{
"myfield": "value1",
"myList": ["item1" , "item2", "item3"]
}
很遗憾MariaDB动态列本身不支持JSON数组列表,尽管这是一个解决方案,并且与INTEGERS更好地协作,但您可以尝试使用字符串。
ALTER TABLE `your_table` ADD COLUMN `dynamic_column` BLOB NULL DEFAULT
NULL ;
您将数组列表作为字符串存储在动态列
INSERT INTO
your_table (dynamic_column)
VALUES
(COLUMN_CREATE('myfield','value1'
,'myList','["item1" , "item2", "item3"]')
);
OR
UPDATE
your_table
SET
dynamic_column = COLUMN_CREATE('myfield','value1'
,'myList','["item1" , "item2", "item3"]'
)
WHERE
id = your_id ;
到目前为止好现在有棘手的部分。如何在不破坏格式的情况下返回。使用替换功能:
SELECT REPLACE(REPLACE(COLUMN_JSON(dynamic_column),'"[','['),']"',']') FROM your_table ;
您还可以在不创建任何表的情况下快速测试输出。
SET @tmp= COLUMN_CREATE('myfield','value1','myList','[ "item1" , "item2" , "item3" ]') ;
SELECT REPLACE(REPLACE(COLUMN_JSON(@tmp),'"[','['),']"',']') json_string;
如果输出中断与JSON格式 '\':
+----------------------------------------------------------------------+
| json_string |
+----------------------------------------------------------------------+
| {"myList":[ \"item1\" , \"item2\" , \"item3\" ],"myfield":"value1"} |
+----------------------------------------------------------------------+
然后尝试像
SELECT REPLACE(REPLACE(REPLACE(COLUMN_JSON(@tmp),'"[','['),']"',']'),'\\','') json_string;
+----------------------------------------------------------------+
| json_string |
+----------------------------------------------------------------+
| {"myList":[ "item1" , "item2" , "item3" ],"myfield":"value1"} |
+----------------------------------------------------------------+
搏一搏!
** 不要忘记验证像或的TextWrangler记事本++
** 任何网上验证或文本编辑器的JSON字符串输出当心有时动态列可以是动态的疼痛
干杯
任何事情都可能发生,但没有任何理由为什么您想要这样做 – Strawberry
JSON输出来自第三方系统,我希望将其存储在数据库中以便稍后处理。 –
我想你应该改变你的问题:如何将给定的JSON转换为使用动态列的MariaDB SQL插入语句,如此处所述。 https://mariadb.com/kb/en/mariadb/dynamic-columns/您应该指定您计划使用哪种编程语言。 – Risadinha