You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse专用SQL池执行ISJSON函数报AS关键字附近语法错误

问题根因

你当前使用的2022年6月发布的10.0.15661.0版本Azure Synapse专用SQL池,并未正式原生支持ISJSON函数。
微软官方文档中关于ISJSON的Synapse支持说明存在范围歧义:早期文档标注的支持仅覆盖无服务器SQL池,专用SQL池对ISJSON的原生支持是2022年下半年才通过补丁逐步推送的,你所用的版本刚好卡在功能正式上线前的节点,SQL解析器无法识别ISJSON为内置函数,解析过程语法错位才会抛出"关键字'AS'附近有语法错误"的提示,这也能解释同环境下更早落地支持的OPENJSON可以正常运行。

可用解决方案

方案1:临时兼容(无需升级版本)

利用当前环境已支持的OPENJSON自定义标量函数,实现和原生ISJSON完全一致的判断逻辑:

CREATE FUNCTION dbo.ISJSON_CUSTOM(@input NVARCHAR(MAX))
RETURNS BIT
AS
BEGIN
    DECLARE @valid BIT = 0
    BEGIN TRY
        -- 传入内容可被OPENJSON正常解析即为合法JSON
        SELECT TOP 1 @valid = 1 FROM OPENJSON(@input)
    END TRY
    BEGIN CATCH
        SET @valid = 0
    END CATCH
    RETURN @valid
END

使用时将原代码中的ISJSON(字段名/JSON字符串)替换为dbo.ISJSON_CUSTOM(字段名/JSON字符串)即可,判断逻辑和返回值规则和原生函数完全一致,不会改动原有业务判断逻辑。

方案2:原生功能启用(根治方案)

将当前专用SQL池实例升级到2022年下半年之后发布的稳定版本即可直接使用原生ISJSON,你可以在Synapse工作区的专用池管理页触发版本更新,若后台未提供自助更新入口,可提交Azure支持工单申请将实例刷到最新的兼容版本,升级后无需任何代码改动即可正常运行你原来的SQL语句。

踩坑提示
  • 不要尝试通过调整数据库兼容级别解决该问题,该问题属于内置函数未随版本落地,和兼容级别配置无关
  • 自定义函数实现的JSON校验逻辑对JSON数组、JSON对象、嵌套JSON的判断结果和原生ISJSON完全一致,性能差异在常规数据量场景下可忽略

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 11:00:59