sql-server - 使用 OPENQUERY 将 NULL 插入地理类型
问题描述
当我运行这个查询
CREATE TABLE t
(
tt Geography
)
INSERT INTO t(tt)
SELECT *
FROM OPENQUERY([Server2],'SELECT NULL')
它抛出一个错误
消息 206,级别 16,状态 2,第 14 行操作数类型冲突:int 与地理不兼容
但是当我运行它时,它工作正常:
INSERT INTO t(tt)
SELECT NULL
我需要使用OPENQUERY
,如何解决上述问题?理想情况下,我需要修复OPENQUERY
解决方案
该错误实际上是在告诉您这里的问题,NULL
其值类型为int
. 这是因为你没有为你的列定义一个类型,所以默认是int
并且该数据类型是从OPENQUERY
. 您可以通过运行以下命令来查看:
SELECT system_type_name
FROM sys.dm_exec_describe_first_result_set(N'SELECT NULL;',NULL,0);
返回的通知值为int
. 您需要硬转换您的价值:
INSERT INTO t(tt)
SELECT *
FROM OPENQUERY([Server2],'SELECT CONVERT(geography,NULL)');
推荐阅读
- api - 为什么除了 Talend API tester 之外的每个客户端都可以使用此 REST 请求
- android - Android 11 上的新 BlobStoreManager 读写
- awk - awk 在第一次出现字符时拆分
- javascript - 如何在不同的时间制作两个动画?
- typescript - 函数的联合不能传递给泛型函数
- excel - Octave:无法通过 COM 函数保存 excel 文件(COM 错误 0x800a03ec)
- firebase - .uid:没有为“UserCredential”类型定义吸气剂“uid”。- 颤振,FirebaseAuth
- reactjs - 无法在 mac m1 上为 react 项目运行“npm run build”
- algorithm - 在 O(n) 中构建 AVL 树?
- html - 导航栏中的徽标在 Internet Explorer 中未正确居中