INSERT 查询 SQL(将数据类型 nvarchar 转换为 (null) 时出错)
INSERT Query SQL (Error converting data type nvarchar to (null))
我正在尝试 运行 一个 INSERT
查询,但它要求我将 varchar
转换为 null。这是代码:
INSERT Runtime.dbo.History (DateTime, TagName, vValue)
VALUES ('2015-09-10 09:00:00', 'ErrorComment', 'Error1')
错误信息:
Error converting data type nvarchar to (null).
问题出在 vValue
列。
column vValue(nvarchar, null)
它在数据库中的样子:
vValue
中的值由我正在使用的程序放置。我只是想手动插入数据库。
上次 post 列错了,抱歉。
数据库中列值的类型是什么?
如果是浮点数,你应该插入一个数字,而不是字符串。
将 "error1" 转换为 FLOAT 是无意义的。
浮点数是一个数字,例如:1.15、12.00、150.15
当您尝试将 "Error1" 转换为浮动时,他会尝试将文本 "error1" 转换为数字,但他不能,这是合乎逻辑的。
您应该在该列中插入一个数字。
我想我可以帮助你解决你的问题,因为我有一个不错的测试环境可以用来试验。
Runtime.dbo.History
不是您可以直接与之互动的 table,它是 View
。在我们的例子中,视图定义为:
select * from [INSQL].[Runtime].dbo.History
...我认为这意味着您正在查看的历史数据来自 Historian 平面文件存储本身,这是一个 Wonderware 专有系统。如果您扩展 SQL Server Management Studio 的
,您可能会看到一些成功
Server Objects -> Linked Servers -> INSQL
...并在那里玩弄数据,但我真的不推荐它。
话虽如此,您为什么需要插入标签历史记录?可能还有其他解决方法可以满足您的需要。
联系 Wonderware 支持后,我发现 vValue 列在设计上不支持 INSERT。这是一个字符串值,应该通过 StringHistory table.
进行更新
我正在尝试 运行 一个 INSERT
查询,但它要求我将 varchar
转换为 null。这是代码:
INSERT Runtime.dbo.History (DateTime, TagName, vValue)
VALUES ('2015-09-10 09:00:00', 'ErrorComment', 'Error1')
错误信息:
Error converting data type nvarchar to (null).
问题出在 vValue
列。
column vValue(nvarchar, null)
它在数据库中的样子:
vValue
中的值由我正在使用的程序放置。我只是想手动插入数据库。
上次 post 列错了,抱歉。
数据库中列值的类型是什么?
如果是浮点数,你应该插入一个数字,而不是字符串。
将 "error1" 转换为 FLOAT 是无意义的。 浮点数是一个数字,例如:1.15、12.00、150.15 当您尝试将 "Error1" 转换为浮动时,他会尝试将文本 "error1" 转换为数字,但他不能,这是合乎逻辑的。
您应该在该列中插入一个数字。
我想我可以帮助你解决你的问题,因为我有一个不错的测试环境可以用来试验。
Runtime.dbo.History
不是您可以直接与之互动的 table,它是 View
。在我们的例子中,视图定义为:
select * from [INSQL].[Runtime].dbo.History
...我认为这意味着您正在查看的历史数据来自 Historian 平面文件存储本身,这是一个 Wonderware 专有系统。如果您扩展 SQL Server Management Studio 的
,您可能会看到一些成功Server Objects -> Linked Servers -> INSQL
...并在那里玩弄数据,但我真的不推荐它。
话虽如此,您为什么需要插入标签历史记录?可能还有其他解决方法可以满足您的需要。
联系 Wonderware 支持后,我发现 vValue 列在设计上不支持 INSERT。这是一个字符串值,应该通过 StringHistory table.
进行更新