Azure Synapse隐式建表报语法错误,显式建表正常原因咨询
问题原因解析
这个报错的核心是Azure Synapse SQL池对CTAS(CREATE TABLE AS SELECT)语句中的OPENJSON WITH子句有特殊的字符串长度限制:
- 在CTAS场景下,如果你在OPENJSON的WITH子句里定义
NVARCHAR(350)这类长度超过255的字符串类型,Synapse的语法解析器会直接触发语法错误,报错位置正好对应你写的350数值。 - 而显式建表后再执行INSERT的方式不受这个限制,因为此时OPENJSON WITH子句是在INSERT SELECT的上下文里运行,语法解析逻辑和CTAS不同,支持更大的字符串长度定义。
你可以把CTAS脚本里的NVARCHAR(350)改成NVARCHAR(255)或更小的长度,就能正常完成隐式建表操作。
内容的提问来源于stack exchange,提问作者Ruslan A
相关产品推荐
相关产品推荐

