前言,型別必須是json,雖然text也可以,但是很多操作沒法使用,比如查詢,當然了,這種型別還可以儲存陣列類似 varchar,設定 json 主要將字段的 type 是 json, 不能設定長度,可以是 null 但不能有預設值。
就是插入 json 格式的字串,可以是物件的形式,也可以是陣列的形式
insert
into `a_goods` (`type`, `attrs`)
values
('["新品","熱銷",1,"0"]',''
)
mysql 也有專門的函式json_object
,json_array
生成 json 格式的資料,但是吧,使用的時候有注意點,盡量之間寫進去吧
//json_object必須是偶數,巢狀時必須搭配json_array
insert
into `a_goods` (`attrs`, `type`)
values
(json_object
("name"
,"張三"
,"age",20
,"strage"
,"20"
,"data"
,json_array
("新品"
,"熱銷",1
,"0"))
,json_array
("新品"
,"熱銷",1
,"0"
))
一般對應字串型別的 category->』$.name』 中還包含著雙引號,這其實並不是想要的結果,可以用 json_unquote 函式將雙引號去掉,從 mysql 5.7.13 起也可以通過這個操作符* ->> *這個和 json_unquote 是等價的
查詢json的值,即鍵的值
select attrs-
>
'$.name'
as name,
json_unquote
(attrs-
>
'$.name'
), attrs-
>
>
'$.name'
from a_goods
/* select
attrs->'$.name' as name, 查詢json資料中的name的值並賦值給name
json_unquote(attrs->'$.name'),
attrs->>'$.name'
from a_goods
*/
json中的where 語句
select
*from a_goods where type =
cast
('["新品","熱銷",1,"0"]'
asjson
)//查詢json是否在資料庫的存在,其實就相當於 `where a=1` 只不過這個a得轉換一下
//cast函式用於將某種資料型別的表示式顯式轉換為另一種資料型別
select
*from a_goods where attrs-
>
>
'$.age'
='20'
//要特別注意的是,json 中的元素搜尋是嚴格區分變數型別的,比如說整型和字串是嚴格區分的,即 「20」和20
select
*from a_goods where
json_contains
(attrs,
'20'
,'$.age'
)select
*from a_goods where
json_contains
(type,
'"新品"'
)//用json_contains 函式,但和 *column->path *的形式有點相反的是,json_contains 第二個引數是不接受整數的,無論 json 元素是整型還是字串,否則會出現錯誤
更新陣列按以往的更新就行
update a_goods set type =
'["demo","0",1]'
但如果要更新 json 下的元素,mysql 並不支援 *column->path *的形式,則可能要用到以下幾個函式
json_insert()
插入新值,但不會覆蓋已經存在的值
update a_goods set category =
json_insert
(category,
'$.name'
,'lnmp'
,'$.url'
,'www.lnmp.cn'
)where id =
1;
json_set()
插入新值,並覆蓋已經存在的值
update a_goods set category =
json_set
(category,
'$.host'
,'www.lnmp.cn'
,'$.url'
,'')where id =
1;
json_replace()
只替換存在的值
update a_goods set category =
json_replace
(category,
'$.name'
,'php'
,'$.url'
,'')where i
json_remove()
刪除 json 元素
update a_goods set category =
json_remove
(category,
'$.url'
,'$.host'
)where id =
1;
js對json陣列的操作 查 刪 改 增
1 json陣列 var persons 2 根據物件屬性值得到相應物件 1.獲取 name 等於 lily 的物件 var lily persons.filter p console.log lily 列印結果 注 filter 方法返回的是乙個陣列 var twins persons.filte...
JSON陣列操作
我們首先定義乙個json陣列物件如下 var persons 一.根據物件屬性值得到相應物件 1.獲取 name 等於 lily 的物件 var lily persons.filter p console.log lily 列印結果 注 filter 方法返回的是乙個陣列 var twins per...
mysql解析json 陣列
mysql在5.7開始支援json解析了 也可以解析陣列哦!直接上demo select substr col,2,length col 2 length col from select json extract json extract json extract state,tpl items 0...