SELECT varchar 列 JSON 数据为 JSON
SELECT varchar column with JSON data as JSON
我有一个包含几列的 table,其中一列(我们称之为 EXIF
)是 varchar
并且包含一个有效的 JSON 字符串。
我想 select table 和 FOR JSON
并且我想将 EXIF
列中的 JSON 数据作为JSON 结果。
现在 EXIF
列中的数据作为字符串返回并在结果中转义。
SELECT Col1, EXIF
FROM blah
FOR JSON AUTO
预计:
{
"Col1": "something",
"EXIF": {
"GPS": "xxx"
}
}
我得到的是什么
{
"Col1": "something",
"EXIF": "{\"GPS\": \"xxx\"}"
}
您可以使用 JSON_QUERY()
函数,它还指示 JSON 对象的格式是否有效(如果无效,则 select 中的错误 returns =]语句),为了去掉那些转义字符,如
SELECT Col1, JSON_QUERY(EXIF) AS EXIF
FROM blah
FOR JSON AUTO
已经解决。关键是将 JSON_QUERY
放在 CASE
之外。
不工作
SELECT Col1,
CASE WHEN ISJSON(EXIF)=1 THEN JSON_QUERY(EXIF) END AS EXIF2
FROM BLAH
FOR JSON AUTO
工作
SELECT Col1,
JSON_QUERY(CASE WHEN ISJSON(EXIF)=1 THEN EXIF END) AS EXIF2
FROM BLAH
FOR JSON AUTO
我有一个包含几列的 table,其中一列(我们称之为 EXIF
)是 varchar
并且包含一个有效的 JSON 字符串。
我想 select table 和 FOR JSON
并且我想将 EXIF
列中的 JSON 数据作为JSON 结果。
现在 EXIF
列中的数据作为字符串返回并在结果中转义。
SELECT Col1, EXIF
FROM blah
FOR JSON AUTO
预计:
{
"Col1": "something",
"EXIF": {
"GPS": "xxx"
}
}
我得到的是什么
{
"Col1": "something",
"EXIF": "{\"GPS\": \"xxx\"}"
}
您可以使用 JSON_QUERY()
函数,它还指示 JSON 对象的格式是否有效(如果无效,则 select 中的错误 returns =]语句),为了去掉那些转义字符,如
SELECT Col1, JSON_QUERY(EXIF) AS EXIF
FROM blah
FOR JSON AUTO
已经解决。关键是将 JSON_QUERY
放在 CASE
之外。
不工作
SELECT Col1,
CASE WHEN ISJSON(EXIF)=1 THEN JSON_QUERY(EXIF) END AS EXIF2
FROM BLAH
FOR JSON AUTO
工作
SELECT Col1,
JSON_QUERY(CASE WHEN ISJSON(EXIF)=1 THEN EXIF END) AS EXIF2
FROM BLAH
FOR JSON AUTO