Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从表中选择要插入到另一个表中,出现类型错误_Sql_Sql Server_Tsql - Fatal编程技术网

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忘了做这个,谢谢。