我有一个名为 flag 的char(1)列可以为空。 在表B中,我还有一个不可为空的char(1)列,因此我想在将表A中的数据插入表B之前使用ISNULL,COALESCE或CASE为NULL设置显式值
像这样:
OUTER APPLY (VALUES(COALESCE(A.flag,CAST('0' AS char(1))))) AS AP(flag)
问题是,SQL Server返回以下错误消息:
查找错误 - SQL Server数据库错误:转换失败时 转换varchar值' X'数据类型int。
有些行的值为' X'在表A但为什么SQL Server尝试将char(1)列转换为int?当我只运行SELECT语句(没有插入)时,我没有收到错误。
到目前为止我做了什么:
有什么建议吗?感谢
答案 0 :(得分:0)
我发现,引用该表的其中一个视图是一个索引视图。索引视图中的WHERE-Clause是错误的。 过滤谓词是一个int而不是char(1)。在对此进行处理后,插入工作正常。