Skip to content

mysql udf插件,用以解析或打包json体,主要用于企业中mysql5.6以及以下喜欢用text来存json的场景

Notifications You must be signed in to change notification settings

ivanxwwu/udf_json

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

udf_json说明

mysql udf插件,基于rapidjson开发用以解析或打包json体,主要用于企业中mysql5.6以及以下喜欢用text来存json的场景(珍惜生命,爱护环境,请使用mysql5.7:))

  • 支持uri片段语法来来获取json指定value
  • 支持uri片段来获取json的array的元素数目

编译

cd udf_json

mkdir build

cmake ..

make

安装

cp ./libudf_json.so /usr/local/mysql/lib/plugin/

mysql -uxxx -pxxx -hxxx -Pxxx

drop function udf_json_get_value;
drop function udf_json_array_length;
create function udf_json_get_value returns string soname 'libudf_json.so';
create function udf_json_array_length returns integer soname 'libudf_json.so';

使用示例

SET @test_json='{
	"name": "lily",
	"age": 18,
	"friend": [{
		"name": "lucy",
		"age": 17
	}, {
		"name": "lilei",
		"age": 18
	}]
}';
SELECT udf_json_get_value(@test_json, '/name');
"lily"

SELECT udf_json_get_value(@test_json, '/friend/0/name');
"lucy"

SELECT udf_json_array_length(@test_json, '/friend');
2

uri说明

{
    "foo":["bar":"baz"],
    "pi":3.14
}
  • "/foo" -> ["bar":"baz"]
  • "/foo/0" -> "bar"
  • "/foo/1" -> "baz"
  • "pi" -> 3.14

uri表示方式

字符串表示方式 Pointer Tokens
"/foo/0" {"foo",0}
"a~1b" {"a/b"}
"/m~0n" {"m~n"}
"/ " {" "}
"/\0" {"\0"}
"/€" {"€"}

About

mysql udf插件,用以解析或打包json体,主要用于企业中mysql5.6以及以下喜欢用text来存json的场景

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published