SQL Server-“SQL Server”;提供的值的列名或编号与表定义不匹配;
我知道在过去有很多问题可以解决这个问题,我理解为什么我会犯这个错误 我真的想要一个快捷方式,我的表有数百列,我不想手动筛选代码,根据字段定义检查值。当我试图运行它时,错误消息总是指向同一行号——上面有插入的行 有没有一个简单的方法让它指向它有问题的实际领域 编辑:在阅读了给出的答案后,我意识到我根本不理解这条消息的原因。这只是缺少字段的结果,与不正确的数据类型完全无关。当我添加缺少的字段时,错误消失了,即使某些字段中的数据类型仍然错误 幸运的是,答案和评论理解了问题的实际原因,而不是我对问题的评估,因此问题得到了解决 有没有一个简单的方法让它指向它的实际字段 有什么问题吗 当然不是。这需要对程序员的实际意图有一个直观的理解,而计算机目前还不能做到这一点 您有一个类似以下内容的插入:SQL Server-“SQL Server”;提供的值的列名或编号与表定义不匹配;,sql,sql-server,Sql,Sql Server,我知道在过去有很多问题可以解决这个问题,我理解为什么我会犯这个错误 我真的想要一个快捷方式,我的表有数百列,我不想手动筛选代码,根据字段定义检查值。当我试图运行它时,错误消息总是指向同一行号——上面有插入的行 有没有一个简单的方法让它指向它有问题的实际领域 编辑:在阅读了给出的答案后,我意识到我根本不理解这条消息的原因。这只是缺少字段的结果,与不正确的数据类型完全无关。当我添加缺少的字段时,错误消失了,即使某些字段中的数据类型仍然错误 幸运的是,答案和评论理解了问题的实际原因,而不是我对问题的评
INSERT INTO MyTable (ColumnA, ColumnB, ... ColumnZ)
VALUES (ValueA, ValueC, ... ValueZ)
计算机不可能知道ColumnB应该得到ValueB而不是ValueC,因为可能程序员希望这样。因此,无法通过编程方式知道ValueB是缺少的值,或者ColumnB是“问题列”
所以,对不起,没有捷径
有没有一个简单的方法让它指向它的实际字段
有什么问题吗
当然不是。这需要对程序员的实际意图有一个直观的理解,而计算机目前还不能做到这一点
您有一个类似以下内容的插入:
INSERT INTO MyTable (ColumnA, ColumnB, ... ColumnZ)
VALUES (ValueA, ValueC, ... ValueZ)
计算机不可能知道ColumnB应该得到ValueB而不是ValueC,因为可能程序员希望这样。因此,无法通过编程方式知道ValueB是缺少的值,或者ColumnB是“问题列”
因此,对不起,没有快捷方式。您可以做的一件事是将插入的
结构为:
insert into t(col1,
col2,
. . .
)
values (<whatever>, -- col1
<whatever>, -- col2
. . .
);
插入到t(col1,
col2,
. . .
)
值(,--col1
,--col2
. . .
);
这是表达的顺序。您可以通过将两个列表粘贴到电子表格中并手动比较来发现问题
或者,我更愿意这样做:
insert into t(col1,
col2,
. . .
)
select <whatever> as col1,
<whatever> as col2
. . .
插入到t(col1,
col2,
. . .
)
选择为col1,
作为col2
. . .
当然,仅仅列出插入的列就可以解决问题
那么,我建议你再去看看你的桌子。在一个表中有数百列包含这样的插入可能是个坏主意。也许有更好的方法来组织表格
对于好奇的人来说,MySQL有一个有趣的非标准解决方案。它允许插入中设置,因此您可以显式设置列值。您可以做的一件事是将插入的结构设置为:
insert into t(col1,
col2,
. . .
)
values (<whatever>, -- col1
<whatever>, -- col2
. . .
);
插入到t(col1,
col2,
. . .
)
值(,--col1
,--col2
. . .
);
这是表达的顺序。您可以通过将两个列表粘贴到电子表格中并手动比较来发现问题
或者,我更愿意这样做:
insert into t(col1,
col2,
. . .
)
select <whatever> as col1,
<whatever> as col2
. . .
插入到t(col1,
col2,
. . .
)
选择为col1,
作为col2
. . .
当然,仅仅列出插入的列就可以解决问题
那么,我建议你再去看看你的桌子。在一个表中有数百列包含这样的插入可能是个坏主意。也许有更好的方法来组织表格
对于好奇的人来说,MySQL有一个有趣的非标准解决方案。它允许在insert
中设置set
,因此您可以显式设置列值。这不是SQL
解决方案。但我可能会制作一个小程序,将字段映射到值,然后从中确定错误
请在JavaScript
中检查我的简单程序,这样做是正确的。这不是SQL
解决方案。但我可能会制作一个小程序,将字段映射到值,然后从中确定错误
请在JavaScript
中检查我的简单程序。SQL Server Management Studio中的Intellisense将突出显示无效的列名,这完全取决于INSERT
语句的内容。如果您将其添加到问题提示轻推中,则会有所帮助nudge@JamiePollard我有两个问题,1)intellisense突出显示所有内容,因为它是一个链接服务器,2)字段名很好(对于大多数服务器),但我(大部分)在字段中输入了错误的数据类型。问题的关键就在这里,“我的表有数百列“。这是一个巨大的危险信号,表明设计可能不够理想。@SeanLange我的表有数百列的原因非常充分。我不是业余爱好者。SQL Server Management Studio中的Intellisense将突出显示无效的列名,这完全取决于INSERT
语句的内容。如果您将其添加到问题提示轻推中,则会有所帮助nudge@JamiePollard我有两个问题,1)intellisense突出显示所有内容,因为它是一个链接服务器,2)字段名很好(对于大多数服务器),但我(大部分)在字段中输入了错误的数据类型。问题的关键就在这里,“我的桌子有数百列”,这是一个巨大的危险信号,表明设计可能更少