“第 2 行、第 124 列出现解析错误:‘350’附近的语法不正确。”隐式表创建中出现错误

问题描述 投票:0回答:1

当我在 Azure Synapse SQL Server 中隐式创建表时,我看到以下错误:

解析错误位于行:2,列:
124:
“350”附近的语法不正确。

这是引发错误的脚本。

CREATE TABLE temp.test_table
WITH (DISTRIBUTION = ROUND_ROBIN, HEAP)
AS
SELECT  
    setting.[Company],
    setting.[FileName],
    setting.[Year],
    setting.[Month],
    setting.[Day],
    setting.[Hour],
    setting.[ExpectedNumber],
    row_number() over (order by (select null)) RN
FROM config.settings s
CROSS APPLY OPENJSON(s.SettingValue)
WITH (
    [Company]      NVARCHAR(350), 
    [FileName]    NVARCHAR(100),
    [Year]        NVARCHAR(100),
    [Month]       NVARCHAR(100),
    [Day]         NVARCHAR(100),
    [Hour]        NVARCHAR(100),
    [ExpectedNumber] INT
) AS setting
WHERE s.SettingKey = 'quality\check\files';

虽然我显式创建了表,所以一切都是正确的。我的意思是该表已成功创建并填充。 你在这里

CREATE TABLE temp.test_table
(
    [Company]      NVARCHAR(150), -- Update the data type here
    [FileName]    NVARCHAR(100),
    [Year]        NVARCHAR(100),
    [Month]       NVARCHAR(100),
    [Day]         NVARCHAR(100),
    [Hour]        NVARCHAR(100),
    [ExpectedNumber] INT,
    RN INT
)
WITH (DISTRIBUTION = ROUND_ROBIN, HEAP);


INSERT INTO temp.test_table
SELECT  
    setting.[Company],
    setting.[FileName],
    setting.[Year],
    setting.[Month],
    setting.[Day],
    setting.[Hour],
    setting.[ExpectedNumber],
    row_number() over (order by (select null)) RN
FROM config.settings s
CROSS APPLY OPENJSON(s.SettingValue)
WITH (
    [Company]      NVARCHAR(150), -- Update the data type here
    [FileName]    NVARCHAR(100),
    [Year]        NVARCHAR(100),
    [Month]       NVARCHAR(100),
    [Day]         NVARCHAR(100),
    [Hour]        NVARCHAR(100),
    [ExpectedNumber] INT
) AS setting
WHERE s.SettingKey = 'quality\check\files';

如果有人可以向我解释为什么会发生这种情况。

sql-server azure azure-synapse
1个回答
0
投票

在帖子下提出一系列问题后,我得出的结论是,该问题是在表创建过程中引发的一个错误,该错误是从类似 json 的字符串中提取数据(利用

CROSS APPLY OPENJSON(...)
表达式)。 顺便说一句,当我不使用上述表达式时,将创建一个没有任何错误的表。这是一个成功例子的演示

CREATE TABLE temp.test_table10 WITH (DISTRIBUTION = ROUND_ROBIN, HEAP)
AS SELECT  
     *,
     row_number() over (order by (select null)) RN 
FROM config.settings s 
WHERE s.SettingKey = 'DQ\check\inboundFiles';

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.