gpt4 book ai didi

sql-server - SQL Server 2016 SP1 - 这是一个错误吗?

转载 作者:行者123 更新时间:2023-12-03 20:39:53 24 4
gpt4 key购买 nike

我刚刚安装了 SQL Server 2016 和 SP1 并运行了这个 TSQL 脚本

CREATE TABLE [dbo].TEST(
[id] [INT] IDENTITY(1,1) NOT NULL,
[lat] [DECIMAL](9, 6) NULL,
[lng] [DECIMAL](9, 6) NULL,
[Location] AS ([geography]::STGeomFromText(((('POINT ('+[lng])+' ')+[lat])+')',(4326)))
PERSISTED
)

表格创建的很好。

然后我运行以下命令(表中没有记录)

Select * from TEST

返回

消息 8114,级别 16,状态 5,第 8 行将数据类型 varchar 转换为数字时出错。

Location字段相关。

这是 SQL Server 2016 中的错误吗?我不希望出现这种行为。

以下不会引起任何问题

CREATE TABLE [dbo].TEST2(
[id] [INT] IDENTITY(1,1) NOT NULL,
[lat] [DECIMAL](9, 6) NULL,
[lng] [DECIMAL](9, 6) NULL,
[Location] AS [lng] PERSISTED
)

select * from TEST2

最佳答案

改变

[Location] AS ([geography]::STGeomFromText(((('POINT (' + [lng]) + ' ') + [lat]) + ')', (4326)))

[Location] AS ([geography]::STGeomFromText(((('POINT (' + CAST([lng] AS varchar)) + ' ') + CAST([lat] AS varchar)) + ')', (4326)))

两者的区别在于 CAST 函数的用法,如下所示:

CAST([lng] AS varchar)
CAST([lat] AS varchar)

只是 [lng][lat] 是小数连接到 varchar 字符串的问题。在您实际执行查询之前,即使表中没有数据,它也不是问题的原因是 [Location] 字段在执行选择查询之前不会形成。

不一定是错误,而是 SQL Management Studio 应该在执行 CREATE TABLE 查询之前解析的内容。

关于sql-server - SQL Server 2016 SP1 - 这是一个错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40879226/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com