当 WHERE-IN 运算符的参数包含像 ('asdf:asdf') 这样的冒号时,Synapse Analytics 查询失败

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

我正在使用 Synapse Analytics 查询包含单列的简单 .csv 文件。 这是我正在使用的查询:

SELECT a.[Product Code]
    FROM OPENROWSET(
         BULK ('https://<mystorage>.dfs.core.windows.net/<somefolder>/<filename>.csv'),
                  FORMAT = 'CSV',
                  PARSER_VERSION = '2.0',
                  HEADER_ROW = TRUE
              ) as a 
    WHERE a.[Product Code] NOT IN ('123:123', '234:234234')

这个查询非常简单,所以我不确定哪里会出错。 但是,我在执行的时候遇到了一个错误:

Error converting data type varchar to bigint.

经过一番调查,我发现问题是由参数中的冒号符号(':')引起的。

我试图通过将参数转换为 VARCHAR 或 NVARCHAR 来解决错误,但这没有帮助。

我也找不到任何方法来转义冒号。

因此,我求助于用不同的符号替换冒号,如下所示:

SELECT a.[Product Code]
    FROM OPENROWSET(
         BULK ('https://<mystorage>.dfs.core.windows.net/<somefolder>/<filename>.csv'),
                  FORMAT = 'CSV',
                  PARSER_VERSION = '2.0',
                  HEADER_ROW = TRUE
              ) as a 
WHERE REPLACE(a.[Product Code],':',';') NOT IN ('481154559;asdfa')

伙计们,你有什么更好的方法来处理这个问题的建议吗?

tsql escaping special-characters azure-synapse openrowset
© www.soinside.com 2019 - 2024. All rights reserved.