如何在SQL Server中存储Point数据类型?

时间:2014-04-22 04:50:28

标签: c# asp.net sql .net sql-server

如何在SQL Server数据库中最好地存储Point数据类型?

我正在考虑将其设为nvarchar,然后插入一个点字符串,如:100,246,然后在我从数据库中读取值时拆分字符串但是有一种方法可以插入作为Point

4 个答案:

答案 0 :(得分:3)

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:link

有关空间数据类型的更多信息:

答案 1 :(得分:0)

您可以为每个维度定义2个int变量。这样就不需要拆分从DB读取的值。

X int,
Y int

答案 2 :(得分:0)

如果您正在谈论地理点,那么可以查看"圆球坐标系的geography数据类型"或者"欧几里德(平面)坐标系的geometry数据类型。"

自2008年左右以来,SQL Server的spatial data功能可以帮助查询空间数据的各种方法,包括(但不限于)point

答案 3 :(得分:0)

对于地理点:

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;