C# 如何在SQL Server中存储点数据类型?
如何在SQL Server数据库中最好地存储C# 如何在SQL Server中存储点数据类型?,c#,asp.net,sql,.net,sql-server,C#,Asp.net,Sql,.net,Sql Server,如何在SQL Server数据库中最好地存储点数据类型 我正在考虑将其设置为nvarchar,然后插入一个点字符串,如:100246,然后在从DB读取值时拆分字符串,但是否有一种方法可以将其作为点插入?您可以为每个维度定义2个int变量。这样就不需要分割从DB读取的值 X int, Y int 如果您谈论的是地理点,那么可以查看“圆形地球坐标系”的数据类型或“欧几里德(平面)坐标系”的数据类型 自2008年左右以来,SQL Server的功能可以帮助查询空间数据的各种方法,包括(但不限于)。S
点
数据类型
我正在考虑将其设置为
nvarchar
,然后插入一个点字符串,如:100246
,然后在从DB读取值时拆分字符串,但是否有一种方法可以将其作为点插入?您可以为每个维度定义2个int变量。这样就不需要分割从DB读取的值
X int,
Y int
如果您谈论的是地理点,那么可以查看“圆形地球坐标系”的数据类型或“欧几里德(平面)坐标系”的数据类型
自2008年左右以来,SQL Server的功能可以帮助查询空间数据的各种方法,包括(但不限于)。SQL Server确实支持点
数据类型:
创建表:
CREATE TABLE [dbo].[PointTest]
(
[RowId] [int] IDENTITY(1,1) NOT NULL,
[MyPoint] [GEOMETRY] NOT NULL,
)
插入(SRID=4326):
选择:
SELECT MyPoint.STX X, MyPoint.STY Y FROM PointTest;
SQLFiddle:
有关空间数据类型的详细信息,请参见:
对于地理点:
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;
你是指x,y坐标中的点吗?@Katstevens,是的。序列化是不可能的吗?@SimonWhitehead哦,我从来没想过。:)这根本不是不可能的。请不要将两个元素粘在一个列中-这违反了数据库设计的第一个正常形式-一列,一个值。
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;