如何在SQL Server中存储Point数据类型
本文关键字:存储 Point 数据类型 Server SQL | 更新日期: 2023-09-27 17:59:21
如何在SQL Server数据库中最好地存储Point
数据类型?
我想把它设为nvarchar
,然后插入一个点字符串,比如:100,246
,然后在我从DB读取值时拆分字符串,但有没有办法只插入为Point
?
SQL Server确实支持Point
数据类型:
- 点
创建表格:
CREATE TABLE [dbo].[PointTest]
(
[RowId] [int] IDENTITY(1,1) NOT NULL,
[MyPoint] [GEOMETRY] NOT NULL,
)
插入(SRID=4326):
INSERT INTO PointTest(MyPoint) values (GEOMETRY::Point(3, -4, 4326))
选择:
SELECT MyPoint.STX X, MyPoint.STY Y FROM PointTest;
SQLFiddle:链接
有关空间数据类型的更多信息:
- 空间数据
您可以为每个维度定义2个int变量。这样就不需要对从DB中读取的值进行拆分。
X int,
Y int
如果你谈论的是地理点,那么也许可以看看"圆形地球坐标系"的地理数据类型,或者"欧几里得(平面)坐标系统"的几何数据类型。
自2008年左右以来,SQL Server的空间数据功能可以帮助查询空间数据的各种方法,包括(但不限于)点。
对于地理点:
create table foo (
id int primary key,
latlon [GEOGRAPHY]
);
insert into foo values (1, geography::Point(40.7, -74, 4326));
select
latlon.Lat as latitude,
latlon.Long as longitude,
latlon.ToString() as plaintext
from foo;