Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在SQL Server中存储点数据类型?_C#_Asp.net_Sql_.net_Sql Server - Fatal编程技术网

C# 如何在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

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


我正在考虑将其设置为
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;