Sql 从表中选择要插入到另一个表中,出现类型错误
我有下面的查询,在从另一个表中选择数据后,它将数据插入到一个表中 问题是其中一列的数据类型不匹配。我简化了下面的问题Sql 从表中选择要插入到另一个表中,出现类型错误,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有下面的查询,在从另一个表中选择数据后,它将数据插入到一个表中 问题是其中一列的数据类型不匹配。我简化了下面的问题 INSERT INTO tbl.LogTable ( [SelPartNo], -- This does not match, see below ) SELECT TOP 1 IF([SelPartNo] = 'False', NULL, [SelPartNo], FROM tbl.MyTable WHERE ID = '20358' ORDER BY
INSERT INTO tbl.LogTable (
[SelPartNo], -- This does not match, see below
)
SELECT TOP 1
IF([SelPartNo] = 'False', NULL, [SelPartNo],
FROM tbl.MyTable
WHERE ID = '20358'
ORDER BY CreateDate DESC
第一个SelPartNo
是int,第二个是VarChar
。在大多数情况下,第二个(tbl.MyTable
)的SelPartNo
是NULL
或整数,我认为这不会导致问题。但在某些情况下,该值为“False”,需要返回NULL
我尝试了一个IF语句,但我做了一些错误的事情,因为它给出了一个语法错误,我不确定这是否是正确的方法。您的代码在语法上是不正确的 试一下
NULLIF([SelPartNo],'False')
如果两个表达式相等,则此函数返回NULL
详细信息:您的代码语法不正确 试一下
NULLIF([SelPartNo],'False')
如果两个表达式相等,则此函数返回NULL
详细信息:我认为如果
是一个函数,至少不是一个可以在SELECT
语句中使用的函数。但是当。。。END
是你的朋友:
INSERT INTO tbl.LogTable (
[SelPartNo]
)
SELECT TOP 1
CASE WHEN [SelPartNo] = 'False' THEN NULL ELSE [SelPartNo] END
FROM tbl.MyTable
WHERE ID = '20358'
ORDER BY CreateDate DESC
我不认为
如果是一个函数,至少不是一个可以在SELECT
语句中使用的函数。但是当。。。END
是你的朋友:
INSERT INTO tbl.LogTable (
[SelPartNo]
)
SELECT TOP 1
CASE WHEN [SelPartNo] = 'False' THEN NULL ELSE [SelPartNo] END
FROM tbl.MyTable
WHERE ID = '20358'
ORDER BY CreateDate DESC
你少了一个括号。这真的是您在SQL Server上尝试运行的逐字记录代码吗?而且,IF
应该是IIF
。这是简化的代码。我需要帮助的是第5行。@Shnugo忘了做这件事,谢谢。你少了一个括号。这真的是您在SQL Server上尝试运行的逐字记录代码吗?而且,IF
应该是IIF
。这是简化的代码。这是我需要帮助的第5行。@Shnugo忘了做这个,谢谢。