【问题标题】:The data type of the column 'AddressLine1' in the external table is different than the column's data type外部表中“AddressLine1”列的数据类型与该列的数据类型不同
【发布时间】:2020-08-12 16:54:55
【问题描述】:

错误信息: 外部表中“AddressLine1”列的数据类型与外部源上存在的基础独立表或分片表中列的数据类型不同。

当我尝试在 Azure SQL 中查询外部数据表时显示。数据表为:

CREATE EXTERNAL TABLE ExternalTable
(
[LastName] nvarchar (255)
,[FirstName] nvarchar (255)
,[AddressLine1] varchar(max)
) WITH (DATA_SOURCE = Externaldb)

数据库上的基础数据来自视图而不是源表。这就是导致我的问题的原因。视图中的AddressLine1字段其实是:

REPLACE((ISNULL([AddressLine1],'')),',',' ') as [AddressLine1]

而不是原始数据。

我在创建外部表脚本中尝试了以下数据类型,但它们都不起作用:

nvarchar(255)
nvarchar(max)
varchar(255)
varchar(max)

我不知道如何在视图中找到 Azure SQL 分配给该列的数据类型。

【问题讨论】:

  • 你能在视图中明确地投射它吗? CAST(REPLACE((ISNULL([AddressLine1],'')),',',' ') AS VARCHAR(255)) as [AddressLine1]?
  • 我可以!这样就解决了。非常感谢 JNevill。惊人的。谢谢。
  • 嗨@Billson3000,您可以考虑将其标记为答案。这对其他社区成员可能是有益的。再次感谢 JNevill。

标签: sql azure-sql-database


【解决方案1】:

感谢@JNevill 在评论中的回答,它帮助@Billson3000 修复它:

在视图中将AddressLine1字段投射到视图中:

CAST(REPLACE((ISNULL([AddressLine1],'')),',',' ') AS VARCHAR(255)) as [AddressLine1]

这解决了问题。

我帮助他们将其发布为答案,这可能对其他社区成员有益。

再次感谢@JNevill。

【讨论】:

  • 谢谢Leon Yue。下次我会这样做。我不知道我能做到这一点。感谢您的所有帮助。
猜你喜欢
  • 2018-01-12
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 2011-05-20
  • 1970-01-01
  • 2013-10-13
  • 2011-12-01
相关资源
最近更新 更多