小编Coo*_*ter的帖子

NULL和VARCHAR之间的SQL联合错误

我有两个相同列的视图.第一个视图中的一列是"动态"生成并设置为NULL,而另一个视图上的相同列的值存储为varchar.我有一个看起来像这样的存储过程:

ALTER PROCEDURE [dbo].[mi_GetLearners]  
(@centrename nvarchar(200))  
AS  

SELECT [centrename]  
      ,[Name]  
      ,[Username] --generated on the fly as NULL
FROM  [DB1].[dbo].[vw_Learners]  
WHERE [centrename] = @centrename  

UNION  

SELECT [centrename]  
      ,[Name]   
      ,[Username] --values stored as varchar   
FROM  [Linked_Server].[DB2].[dbo].[vw_Learners]  
WHERE [centrename] = @centrename 
Run Code Online (Sandbox Code Playgroud)

DB1位于SQL Server 2008 R2上
DB2位于SQL Server 2005上

当我运行存储过程时,我收到以下错误:

当将varchar值'someusername'转换为数据类型int时,消息245,级别16,状态1,行1转换失败.

为什么尝试将值转换为int数据类型,因为另一列设置为NULL?如果我不是从改变第二列NULL' '存储的过程正常工作......我真的很困惑,为什么一个联盟之间的varchar列,并NULL在SELECT语句生成列会抛出这样的错误...任何想法?

编辑:我正在寻找解释而不是解决方案......

编辑2:运行以下代码:

CREATE VIEW vw_myview
AS
SELECT NULL AS MyColumn

EXECUTE sp_help vw_myview
Run Code Online (Sandbox Code Playgroud)

返回:

    Type    Column_name
     int …
Run Code Online (Sandbox Code Playgroud)

sql t-sql null sql-server-2005 sql-server-2008

5
推荐指数
1
解决办法
6188
查看次数

Airflow SFTPHook - 找不到主机的主机密钥

我尝试通过传入 a 来使用 Airflow SFTPHookssh_conn_id,但出现错误:

No hostkey for host myhostname found.
Run Code Online (Sandbox Code Playgroud)

然而,使用SFTPOperator进行同样的操作ssh_conn_id却可以正常工作。我该如何解决这个错误?

airflow google-cloud-composer

5
推荐指数
1
解决办法
3775
查看次数