【问题标题】:SQL Error: Incorrect Syntax near the keyword UserSQL 错误:关键字用户附近的语法不正确
【发布时间】:2020-05-12 21:16:49
【问题描述】:

我正在尝试针对数据库编写第一个 SQL 查询以获取用户列表。我正在使用 Crystal Reports,当我通过报表生成器然后运行它时,我得到了上述错误。

当我查看 SQL 查询时,我看到:

SELECT
    User."Disabled", User."UserName"
FROM
    "Database"."dbo"."User" User           
ORDER BY
    User."UserName" ASC

我看到其他文章说用户需要在括号中,所以我这样做了:

SELECT
    User."Disabled", User."UserName"
FROM
    "Database"."dbo"."User" [User]           
ORDER BY
    User."UserName" ASC

当我这样做时,我会收到一条错误消息:

不能在 nvarchar 上调用方法

有人可以帮我弄清楚我在这里做错了什么吗?

谢谢,

【问题讨论】:

标签: sql keyword


【解决方案1】:

你为什么要使用双引号?我会开始:

SELECT u.Disabled, u.UserName
FROM Database.dbo.User u           
ORDER BY u.UserName ASC

您没有指定您的数据库,但像 User 这样的词通常是保留词,因此它们作为标识符名称的选择很糟糕。

【讨论】:

  • 我同意,但这是由另一家公司编写的旧数据库,我只是想从中提取一些数据。数据库表称为用户,我想要的字段称为用户名。我唯一改变的部分是数据库这个词
  • 好的,所以这似乎至少提取了我正在寻找的所有数据。实际上,我必须在整个系统中的每个单词 user 周围加上 []
【解决方案2】:

就像错误消息中建议的那样:用户是关键字。您可以用简单的u 替换您正在使用的User 别名。喜欢:

SELECT u."Disabled", u."UserName"
  FROM "Database"."dbo"."User" u           
 ORDER BY u."UserName" ASC

【讨论】:

  • 我认为我无法在 select 命令中更改它。我会试一试,看看会发生什么。
猜你喜欢
  • 2011-08-30
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-12
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多