【问题标题】:SQL Server Express - Incorrect Syntax near ','SQL Server Express - ',' 附近的语法不正确
【发布时间】:2012-03-28 21:11:43
【问题描述】:

我在这个简单的 sql 上遇到了一个令人讨厌的错误,我无法发现错误,任何帮助都将不胜感激。

CREATE TABLE alertitem 
    ([id] INT, 
     [dateposted] DATETIME, 
     [daterevised] DATETIME, 
     [datestart] DATETIME, 
     [dateexpires] DATETIME, 
     [userid] INT, 
     [title] VARCHAR(MAX), 
     [details] VARCHAR(MAX), 
     [lat] DOUBLE, 
     [lon] DOUBLE, 
     [radius] INT, 
     [imageid] INT);

【问题讨论】:

标签: sql sql-server tsql


【解决方案1】:

Double 不是 SQL Server 数据类型。

这应该是所有数据类型的完整列表,请参阅MSDN

我应该注意,您可能希望使用 FLOAT 或 DECIMAL 来解决您的问题,但我对您正在做的其他事情(生产者或消费者)一无所知,所以我会让您选择哪种数据类型可以解决您的问题。

【讨论】:

  • 它成功了,谢谢,我使用的语法与 MySQL 相同,它使用 DOUBLE 作为数据类型。
【解决方案2】:

将 DOUBLE 更改为 FLOAT 以解决您的问题。

【讨论】:

    【解决方案3】:

    使用 decimal(9,2) 或您需要的精度而不是 DOUBLE

    【讨论】:

      【解决方案4】:

      您只需删除 DOUBLE,因为它不是受支持的数据类型。我还建议以更易于阅读的方式组织您的查询,例如:

      CREATE TABLE alertitem (
          [id] INT,
          [dateposted] DATETIME,
          [daterevised] DATETIME,
          [datestart] DATETIME,
          [dateexpires] DATETIME,
          [userid] INT,
          [title] VARCHAR(MAX),
          [details] VARCHAR(MAX),
          [lat] FLOAT,
          [lon] FLOAT,
          [radius] INT,
          [imageid] INT);
      

      您会发现通过这种方式解决错误更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 2017-07-15
        • 2019-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多