1. 程式人生 > >mysql5.7以下 json欄位處理

mysql5.7以下 json欄位處理

CREATE DEFINER=`your_dbname`@`%` FUNCTION `fn_Json_getKeyValue`(`in_JsonArray` VARCHAR(4096),`in_Index` tinyint,`in_KeyName` VARCHAR(64)) RETURNS varchar(512) CHARSET utf8
BEGIN  
DECLARE vs_return VARCHAR(4096);  
DECLARE vs_JsonArray, vs_Json, vs_KeyName VARCHAR(4096);  
#declare vs_Json varchar(4096);  
DECLARE vi_pos1, vi_pos2 SMALLINT UNSIGNED;  
  
#獲取json欄位 key值  
  
SET vs_JsonArray = TRIM(in_JsonArray);  
SET vs_KeyName = TRIM(in_KeyName);  
  
IF vs_JsonArray = '' OR vs_JsonArray IS NULL   
OR vs_KeyName = '' OR vs_KeyName IS NULL   
OR in_Index <= 0 OR in_Index IS NULL THEN  
SET vs_return = NULL;  
ELSE  
#去掉方括號  
SET vs_JsonArray = REPLACE(REPLACE(vs_JsonArray, '[', ''), ']', '');  
#取指定的JSON物件  
SET vs_json = SUBSTRING_INDEX(SUBSTRING_INDEX(vs_JsonArray,'}', in_index),'}',-1);  
  
IF vs_json = '' OR vs_json IS NULL THEN  
SET vs_return = NULL;  
ELSE  
SET vs_KeyName = CONCAT('"', vs_KeyName, '":');  
SET vi_pos1 = INSTR(vs_json, vs_KeyName);  
IF vi_pos1 > 0 THEN  
#如果鍵名存在  
SET vi_pos1 = vi_pos1 + CHAR_LENGTH(vs_KeyName);  
SET vi_pos2 = LOCATE(',', vs_json, vi_pos1);  
IF vi_pos2 = 0 THEN  
#最後一個元素沒有','分隔符,也沒有結束符'}'  
SET vi_pos2 = CHAR_LENGTH(vs_json) + 1;  
END IF;  
SET vs_return = REPLACE(MID(vs_json, vi_pos1, vi_pos2 - vi_pos1), '"', '');  
END IF;  
END IF;  
END IF;  
  
  
RETURN(vs_return);  
END

相關推薦

mysql5.7以下 json處理

CREATE DEFINER=`your_dbname`@`%` FUNCTION `fn_Json_getKeyValue`(`in_JsonArray` VARCHAR(4096),`in_Index` tinyint,`in_KeyName` VARCHAR(64))

mysql5.7 新增的json型別

一、我們先建立一個表,準備點資料 CREATE TABLE `json_test` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `json` json DEFAULT NULL COMMENT 'json資料'

mysql5.7以下自定義函式解析json

DELIMITER $$ USE `dw`$$ DROP FUNCTION IF EXISTS `fn_Json_getKeyValue`$$ CREATE DEFINER=`data`@`%` FUNCTION `fn_Json_getKeyValue`( i

日誌資料檔案Json資料入庫處理

# -*- encoding:utf-8 -*- import json import warnings import os import os.path import shutil warnings.filterwarnings("ignore") if __name__=="__main__":

MySQL · 最佳實踐 · 如何索引JSON

概述 MySQL從5.7.8起開始支援JSON欄位,這極大的豐富了MySQL的資料型別。也方便了廣大開發人員。但MySQL並沒有提供對JSON物件中的欄位進行索引的功能,至少沒有直接對其欄位進行索引的方法。本文將介紹利用MySQL 5.7中的虛擬欄位的功能來對JSON物件中的欄位進行索引。

laravel框架學習(二) 解決MySQL5.7以下資料無法遷移的方法

報錯 提示 不支援提供新的utf8字符集 第一種方法:修改字符集 修改字符集: 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 第二種方法:如果不修改字符集 修改下預設字串

mysql5.7版本json原生函式初體驗

mysql> select version(); +------------+ | version() | +------------+ | 5.7.18-log | +------------+ 1 row in set (0.00 sec) 測試資料 m

asp.net core mvc api 返回結果的json名大寫小混亂的問題解決

解決方法:在Startup的ConfigureServices方法里加上下面的紅色部分。 public IServiceProvider ConfigureServices(IServiceCollection services) { servi

快速獲取json內的資料(減去填寫的步驟)

有的時候後臺很好,把一些需要的一些欄位全部封裝好的jar包,給我,那樣我就無需去寫欄位,我所要做的就是請求資料,然後根據給的jar包內的欄位set進入即可。 而有的時候沒有這樣情況,更多的是直接請求,自己寫bean或HashMap等,那樣的話有的時候欄位比較少,還好說,但是一旦欄位超多,那麼

MySQL中JSON的使用技巧

mysql5.7.8之後開始原生支援json. 在類似mongodb這種nosql資料庫中,json儲存資料是非常自然的, 在mysql中合理的使用json,能夠帶來極大的便利 Json欄位的使用場景 在讀laravel手冊舉例子時,我們經常會看到 $user->is_admin 來判斷使用者是否為

centos7——mysql5.7忘記root密碼的處理方式

解決方法: 一、通過編輯/etc/my.cnf檔案在[mysqld]下面加上skip-grant-tables=1,儲存退出; 二、重啟MySql服務【systemctl restart mysqld.service】; 三、以root身份登入MyS

SQLite左外連線查詢有重複處理方法

SQLite左外連線查詢有重複欄位處理方法 sqlite在連表查詢過程中,當主表和副表有相同的欄位時,縱然結果正確,但是在處理查詢結果時,在取主表的欄位但會返回副表的欄位值。 現有表ZWAMESSAGE和表ZWAMEDIAITEM,其中兩表中有相同的三個欄位, 執行下面語句

Postgre Sql 寫入Json資料

INSERT INTO nash_invoice( id, invoice_no, contract_no, contract_type, customer_name, nash_company, opening_type, invoice_ty

表,處理詳細, 建立使用者 ,使用者管理 表關係

---恢復內容開始--- 1.修改表名 alter table t1 rename t2; 2.修改表裡欄位型別 alter table t1 modify name  char(5); 3.修改表裡欄位名 alter table  t1 change  name &

Mysql JSON提取某一個屬性值的函式

mysql從5.7開始才支援JSON_EXTRACT等 JSON相關的函式, 專案裡用到的mysql是5.6的,需要提取JSON欄位裡某一個屬性值進行統計, 自己寫了一個笨的提取方法: CREATE DEFINER=`root`@`%` FUNCTION `jsonExtract`(`fieldName

mysql中取出json技巧

有時候會將一些資訊以json形式存在資料庫中,如果太長的話,在取的過程中sql執行會比較慢,如果只取某些鍵值的話會比較浪費 mysql中使用函式JSON_EXTRACT() ±—±--------------------------------------------------------

105-Laravel之解決mysql5.7以下不能執行資料遷移問題

問題分析:由於新版Laravel使用了mysql的新版字符集 utf8mb4utf8mb4_unicode_ci------------------------------------------------------------------------------解決辦法

Spring mvc無法接受到大資料處理

1 :Spring mvc 用@RequestBody 方式,接收方法如下: @RequestMapping(value = "testRecieve") @ResponseBod

easyui中datagrid之formatter,解決狀態處理

記錄一下easyui中datagrid裡面的某些問題我們常常會遇到類似於一些在資料庫中的某種狀態的欄位  但是儲存下來的是數字  於是我們常常會將數字就轉化成自己想要的文字例如formatter: function (value) { if (value == 1)

mysql5.7json格式與json_extract方法使用

資料初始化 json_test表資料,id和jsonstr欄位(型別json) { "no": "7", "title": "運動方式", "content": [{