这里介绍三个SQL函数 JSON_ARRAY 、 JSON_OBJECT和JSON_ARRAYAGG,可以直接通过SQL语句返回JSON格式数据
1. JSON_ARRAY 函数通过逗号(,)分割的多个表达式,返回JSON array格式的数据
SELECT TOP 3 Name,
JSON_ARRAY(%ID,%TABLENAME,UCASE(Name),Age,Home_State) "JSON data"
FROM Sample.Person
SQLSQL
也可以忽略空值(null) ,添加“ABSENT ON NULL”
SELECT TOP 3 Name,
JSON_ARRAY(%ID,%TABLENAME,UCASE(Name),Age,Home_State ABSENT ON NULL) "JSON data"
FROM Sample.Person
SQLSQL
获取到的返回结果
如果想显示空值(null),使用"NULL ON NULL",如果没有特意标明,则该设置为默认值。
下面语句获取客户所有电话号码,并以JSON array格式返回:
SELECT JSON_ARRAY(HomePhone,WorkPhone,Mobile) "JSON data"
FROM Test.Phones
SQLSQL
["055-8263371","052-4957286","054-4951066"]
Shell SessionShell Session
2. JSON_OBJECT函数通过逗号(,)分割的多个键值对(key:value) ,返回JSON 对象的数据
SELECT TOP 3 JSON_OBJECT('title':'Person from’,'country’:UCASE(Home_State),'table':%TABLENAME,'name':Name,'id':%ID,'age':Age) "JSON data"
FROM Sample.Person
SQLSQL
忽略空值,则添加“ABSENT ON NULL”
SELECT TOP 3 JSON_OBJECT('title':'Person from’,'country’:UCASE(Home_State),'table':%TABLENAME,'name':Name,'id':%ID,'age':Age ABSENT ON NULL) "JSON data"
FROM Sample.Person
SQLSQL
同样的如果要显示空值,则添加“NULL ON NULL”,该设置为默认设置。
3. JSON_ARRAYAGG 函数将多个JSON_OBJECT汇聚到一个JSON array中
select JSON_ARRAYAGG(JSON_OBJECT('Id':Id,'Name':Name,'phoneNumber':Phone,'State':state)) As JSON from Sample.Person
SQLSQL