Msg 2750指定的列精度错误SQL

Msg 2750指定的列精度错误SQL,sql,sql-server,Sql,Sql Server,当我尝试添加FacilitySt表时,我得到了一个以前从未见过的错误代码,我不知道为什么会在这里出现。创建表的SQL查询: CREATE TABLE FacilitySt ( IdFacility int NOT NULL PRIMARY KEY, DBA_Name nvarchar(200) NOT NULL, AKA_Name nvarchar(200) NOT NULL, License int NOT NULL, FacilityType nvar

当我尝试添加FacilitySt表时,我得到了一个以前从未见过的错误代码,我不知道为什么会在这里出现。创建表的SQL查询:

CREATE TABLE FacilitySt
(
    IdFacility int NOT NULL PRIMARY KEY,
    DBA_Name nvarchar(200) NOT NULL,
    AKA_Name nvarchar(200) NOT NULL,
    License int NOT NULL,
    FacilityType nvarchar(200) NOT NULL,
    Risk nvarchar(200) NOT NULL,
    InspectionType nvarchar(200) NOT NULL,
    Address nvarchar(200) NOT NULL,
    Latitude float(200) NOT NULL,
    Longitude float(200) NOT NULL,
    Location geography NOT NULL
)
GO
错误消息:

Msg 2750,第16级,状态1,第1行
列或参数#9:指定的列精度200大于最大精度53


SQL操作环境是SQL Server。

我不知道您打算用
float(200)
做什么,但这是可行的:

CREATE TABLE FacilitySt(
    IdFacility int NOT NULL PRIMARY KEY,
    DBA_Name nvarchar(200) NOT NULL,
    AKA_Name nvarchar(200) NOT NULL,
    License int NOT NULL,
    FacilityType nvarchar(200) NOT NULL,
    Risk nvarchar(200) NOT NULL,
    InspectionType nvarchar(200) NOT NULL,
    Address nvarchar(200) NOT NULL,
    Latitude float NOT NULL,
    Longitude float NOT NULL,
    Location geography NOT NULL
)
如果要检查范围,可以使用
check
约束:

CREATE TABLE FacilitySt(
    IdFacility int NOT NULL PRIMARY KEY,
    DBA_Name nvarchar(200) NOT NULL,
    AKA_Name nvarchar(200) NOT NULL,
    License int NOT NULL,
    FacilityType nvarchar(200) NOT NULL,
    Risk nvarchar(200) NOT NULL,
    InspectionType nvarchar(200) NOT NULL,
    Address nvarchar(200) NOT NULL,
    Latitude float NOT NULL,
    Longitude float NOT NULL,
    Location geography NOT NULL,
     check (latitude between -180 and 180 and longitude between -180 and 180)
)
通常,纬度和经度存储为十进制/数值,并带有一定数量的小数点。在许多情况下,
十进制(10,7)
就足够了


我之所以这样说,是因为对于浮点值,等式可能不会像预期的那样起作用。

你知道十进制中的第二个值我想使用10个以上的值吗?例如:十进制(10,20)我必须使用的是什么?@ffallerrol:
decimal(p,s)
的定义是:
p
是总位数(在小数点之前和之后),而
s
是小数点之后的位数一点意义都没有-总共10位数字,其中20位在小数点后……错误实际上是在告诉您这里的问题。错误是什么?您不明白我们可以尝试详细说明的禁令吗。