【问题标题】:Using Language Keywords in SQL Statements在 SQL 语句中使用语言关键字
【发布时间】:2011-08-15 18:45:08
【问题描述】:

嗯,我在我的数据库中有一个字段调用 int,我在 C# 上做了一个程序,那就是更新 'int' 和其他一些字段,一切都很好,直到 int 字段显示语法错误。 我希望 SQL 将 int 表示为字段的名称而不是关键字。 非常感谢。

【问题讨论】:

  • 请发布产生错误的 SQL。
  • 提示:不要使用关键字作为标识符 - 这样生活会更轻松!如果无法更改,请将标识符括在 SQL Server 的方括号中,MySQL 的反引号,Oracle 的双引号......
  • 你能用你的数据库提供者标记这个问题吗?

标签: c# sql syntax error-handling


【解决方案1】:

INT 是保留字。您可以在 MySQL 中使用保留字,方法是将它们括在反引号中:

SELECT `int` FROM mytable ...

但是,如果您避免使用保留字作为标识符,这确实会更容易。也就是说,在定义表时,将列命名为其他名称。

还建议为列命名,以便更清楚地描述其内容或目的。 int 过于笼统,因此可能会造成混淆;这就像命名一个 C# 函数 thefunction()。 :-)

请参阅http://dev.mysql.com/doc/mysqld-version-reference/en/mysqld-version-reference-reservedwords.html 以获取按 MySQL 版本列出的保留字列表。


你的评论:

注意使用正确类型的引号。使用单引号分隔字符串和日期文字。在 MySQL 中,使用反引号来分隔列、表等的标识符。

SELECT ... WHERE `column` = 'string'

在美式键盘上,反引号与波浪号 (~) 在同一个键上。


对于假设您使用的是 MySQL 深表歉意。您可能正在使用 Microsoft SQL Server 或其他品牌的 RDBMS。 Microsoft SQL Server 不使用反引号;相反,您需要将标识符括在方括号中。

另见Do different databases use different name quote?

【讨论】:

  • 非常感谢你们,但它仍然无法正常工作,这就是我试图执行的代码:更新字符 SET 'int' = '5' WHERE name='myname' 并且我仍然得到:你您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 ''int' = '5' WHERE name= 'myname'' 附近使用正确的语法谢谢大家,
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 2020-01-27
相关资源
最近更新 更多