SQL 如何从 Base64 编码串解析出键值对 *
有Base64编码串:eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=
需要将其转码后的json串({"a":63,"c":298,"n":1,"s":1,"e":40,"p":4})解析成表,结果如下所示:
a
c
n
s
e
p
63
298
1
1
40
4
MySQL的SQL:
SELECT
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."a"') a,
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."c"') c,
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."n"') n,
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."s"') s,
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."e"') e,
JSON_EXTRACT(CONVERT(FROM_BASE64('eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=')
USING utf8),
'$."p"') p
这道题本身其实没有什么难度,只需要将Base64编码串转成json,再把json串按K-V解析成表即可。但是SQL写起来很繁琐,尤其当结果表的列数未知时,SQL写起来就会更加复杂。
用开源集算器的SPL就很容易写:
设参数arg1为:eyJhIjo2MywiYyI6Mjk4LCJuIjoxLCJzIjoxLCJlIjo0MCwicCI6NH0=
A |
|
1 |
=json(base64(arg1,"UTF-8")) |
SPL是专业的开源结构化计算语言,很容易计算json以及其他各类数据源。
英文版